diff --git a/tools/run_on_app.py b/tools/run_on_app.py
index 50dba8d..8c72939 100755
--- a/tools/run_on_app.py
+++ b/tools/run_on_app.py
@@ -606,6 +606,9 @@
       extra_args.append('-Dcom.android.tools.r8.allowTypeErrors=1')
     extra_args.append(
         '-Dcom.android.tools.r8.disallowClassInlinerGracefulExit=1')
+    if 'system-properties' in values:
+      for system_property in values['system-properties']:
+        extra_args.append(system_property)
 
   if options.debug_agent:
     if not options.compiler_build == 'full':
diff --git a/tools/upload_to_x20.py b/tools/upload_to_x20.py
index 3a1ef77..e6c293d 100755
--- a/tools/upload_to_x20.py
+++ b/tools/upload_to_x20.py
@@ -21,7 +21,7 @@
   return optparse.OptionParser().parse_args()
 
 def uploadFile(filename, dest):
-  print 'Uploading to %s' % dest
+  print('Uploading to %s' % dest)
   shutil.copyfile(filename, dest)
   subprocess.check_call(['chmod', '664', dest])
 
@@ -29,9 +29,9 @@
   (options, args) = parse_options()
   assert len(args) == 1
   name = args[0]
-  print 'Creating archive for %s' % name
+  print('Creating archive for %s' % name)
   if not name in os.listdir('.'):
-    print 'You must be standing directly below the directory you are uploading'
+    print('You must be standing directly below the directory you are uploading')
     return 1
   filename = utils.create_archive(name)
   sha1 = utils.get_sha1(filename)
@@ -40,7 +40,7 @@
   sha1_file = '%s.sha1' % filename
   with open(sha1_file, 'w') as output:
     output.write(sha1)
-  print 'Sha (%s) written to: %s' % (sha1, sha1_file)
+  print('Sha (%s) written to: %s' % (sha1, sha1_file))
 
 if __name__ == '__main__':
   sys.exit(Main())
diff --git a/tools/youtube_data.py b/tools/youtube_data.py
index 8e1349b..0e4bf8d 100644
--- a/tools/youtube_data.py
+++ b/tools/youtube_data.py
@@ -7,6 +7,8 @@
 
 ANDROID_H_MR2_API = '13'
 ANDROID_L_API = '21'
+ANDROID_M_API = '23'
+
 BASE = os.path.join(utils.THIRD_PARTY, 'youtube')
 
 V15_33_BASE = os.path.join(BASE, 'youtube.android_15.33')
@@ -15,7 +17,10 @@
 V16_20_BASE = os.path.join(BASE, 'youtube.android_16.20')
 V16_20_PREFIX = os.path.join(V16_20_BASE, 'YouTubeRelease')
 
-LATEST_VERSION = '16.20'
+V17_19_BASE = os.path.join(BASE, 'youtube.android_17.19')
+V17_19_PREFIX = os.path.join(V17_19_BASE, 'YouTubeRelease')
+
+LATEST_VERSION = '17.19'
 
 VERSIONS = {
   '15.33': {
@@ -80,6 +85,36 @@
       'min-api' : ANDROID_L_API,
     }
   },
+  '17.19': {
+    'deploy' : {
+      'sanitize_libraries': False,
+      'inputs': ['%s_deploy.jar' % V17_19_PREFIX],
+      'libraries' : [
+          os.path.join(
+              V17_19_BASE,
+              'legacy_YouTubeRelease_combined_library_jars_filtered.jar')],
+      'pgconf': [
+          '%s_proguard.config' % V17_19_PREFIX,
+          '%s_proguard_extra.config' % V17_19_PREFIX,
+          '%s/proguardsettings/YouTubeRelease_proguard.config' % utils.THIRD_PARTY,
+          utils.IGNORE_WARNINGS_RULES],
+      'min-api' : ANDROID_M_API,
+      'system-properties': [
+          '-Dcom.android.tools.r8.experimental.enablecheckenumunboxed=1',
+          '-Dcom.android.tools.r8.experimental.enableconvertchecknotnull=1'],
+      'android_java8_libs': {
+        'config': '%s/desugar_jdk_libs/full_desugar_jdk_libs.json' % V17_19_BASE,
+        # Intentionally not adding desugar_jdk_libs_configuration.jar since it
+        # is part of jdk_libs_to_desugar.jar in YouTube 17.19.
+        'program': ['%s/desugar_jdk_libs/jdk_libs_to_desugar.jar' % V17_19_BASE],
+        'library': '%s/android_jar/lib-v33/android.jar' % utils.THIRD_PARTY,
+        'pgconf': [
+          '%s/desugar_jdk_libs/base.pgcfg' % V17_19_BASE,
+          '%s/desugar_jdk_libs/minify_desugar_jdk_libs.pgcfg' % V17_19_BASE
+        ]
+      }
+    },
+  },
 }
 
 def GetLatestVersion():
