mount("ext4", "EMMC", "/dev/block/mmcblk0p14", "/system");
file_getprop("/system/build.prop", "ro.build.fingerprint") == "motorola/metallica/minnow:4.4W.1/KGW42N/1387258:user/release-keys" ||
    file_getprop("/system/build.prop", "ro.build.fingerprint") == "motorola/metallica/minnow:4.4W.1/KGW42R/1448224:user/release-keys" ||
    abort("Package expects build fingerprint of motorola/metallica/minnow:4.4W.1/KGW42N/1387258:user/release-keys or motorola/metallica/minnow:4.4W.1/KGW42R/1448224:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
getprop("ro.product.device") == "minnow" || abort("This package is for \"minnow\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Verifying current system...");
show_progress(0.100000, 0);
apply_patch_check("/system/app/Bluetooth.apk", "4618a1716659f09e858adf1db0a38749c7d9d824", "924e1adde2f152072a02e635c6ea17036a06ea07") || abort("\"/system/app/Bluetooth.apk\" has unexpected contents.");
set_progress(0.006387);
apply_patch_check("/system/app/CertInstaller.apk", "ff31b84a69b04aa54e008d86f9499705c994e7f4", "3a7b914c5cf8080be39ca91de23ecfffcb927d60") || abort("\"/system/app/CertInstaller.apk\" has unexpected contents.");
set_progress(0.008204);
apply_patch_check("/system/app/DeskClockMicroApp.apk", "f073598072b3c507edfcc15c761ebc40713e2611", "2f02ce134638c93356fa8ce16e05d41e60b0c2fb") || abort("\"/system/app/DeskClockMicroApp.apk\" has unexpected contents.");
set_progress(0.023995);
apply_patch_check("/system/app/UserDictionaryProvider.apk", "371aed8e04a301370e8e536db7d1820cfd9db346", "ba556d271b2abda362be175555667798387f5f33") || abort("\"/system/app/UserDictionaryProvider.apk\" has unexpected contents.");
set_progress(0.024040);
apply_patch_check("/system/bin/debuggerd", "715e1f1cb3040edf0c2d86fc585f1d11566c7d59", "0ca72be73a6bb8ab0f98a4073be659332236f623") || abort("\"/system/bin/debuggerd\" has unexpected contents.");
set_progress(0.024367);
apply_patch_check("/system/build.prop", "f261f9c4ed19c4a1fcd45cc2aa2af84cedd1fa85", "bbedbfb17f6bc25036c96f847b0be4042d886d17") || abort("\"/system/build.prop\" has unexpected contents.");
set_progress(0.024388);
apply_patch_check("/system/etc/NOTICE.html.gz", "d7da7ad5f1eac0c1a89b9dbd8212288edbe06a99", "7bfc702f65008e8946e4da2f6bdabd32151788ff") || abort("\"/system/etc/NOTICE.html.gz\" has unexpected contents.");
set_progress(0.025626);
apply_patch_check("/system/etc/firmware/m4sensorhub-p2_5_minnow.bin", "fdcf3bc46d21a5fa0a32da9db724078e4b4080a8", "69ce955057d6b0f83937f4ce3ff5c5d5bd13de6b") || abort("\"/system/etc/firmware/m4sensorhub-p2_5_minnow.bin\" has unexpected contents.");
set_progress(0.027455);
apply_patch_check("/system/etc/recovery-resource.dat", "a7269fe8bf902346d080cba489831ca8d7a0bfc9", "5446896c7d6ac8d8ce5129b903340f3e3fec6d69") || abort("\"/system/etc/recovery-resource.dat\" has unexpected contents.");
set_progress(0.033788);
apply_patch_check("/system/etc/security/otacerts.zip", "5e31d4008a653efd40ded8a70acf9f59c278ebab", "6f9f80aa1c5dca3c55f789182b7d58b669461bbb") || abort("\"/system/etc/security/otacerts.zip\" has unexpected contents.");
set_progress(0.033808);
apply_patch_check("/system/framework/am.jar", "b99557c6bd2af4efee935e07235a8b25944ef60b", "fb98eb511347d530c7a0ad6388300c2dfe1e3fea") || abort("\"/system/framework/am.jar\" has unexpected contents.");
set_progress(0.033811);
apply_patch_check("/system/framework/am.odex", "869a46878f9951e28e8758619a7d911e86bbe906", "b1e349b6ee2c3739d64f8947a3eea14f1d7f1e6d") || abort("\"/system/framework/am.odex\" has unexpected contents.");
set_progress(0.034429);
apply_patch_check("/system/framework/android.policy.jar", "54e39d9fc558d5077a312ff637ba39338b27e138", "d672294c98f0d41b9b49070c0293d11399c16e16") || abort("\"/system/framework/android.policy.jar\" has unexpected contents.");
set_progress(0.034433);
apply_patch_check("/system/framework/android.policy.odex", "97a6a0f96c0223876035469edb1594714657911a", "d7be52caacf7885843322c70005105c824c49635") || abort("\"/system/framework/android.policy.odex\" has unexpected contents.");
set_progress(0.037754);
apply_patch_check("/system/framework/android.test.runner.jar", "9be015d9a545d376d12fa850168327814f460dd7", "13d3646b56f9a2a236f5be42d6b0b77a48085561") || abort("\"/system/framework/android.test.runner.jar\" has unexpected contents.");
set_progress(0.037758);
apply_patch_check("/system/framework/android.test.runner.odex", "7228bf11228985c9a787c88ca71404ef6f7cdda5", "35a80687487fa4ea59eccd37fd09a90a5f10a5b8") || abort("\"/system/framework/android.test.runner.odex\" has unexpected contents.");
set_progress(0.040159);
apply_patch_check("/system/framework/apache-xml.jar", "c3798ff79079f11b0e3ec7c72a0029e9a0831193", "c29155322539dfb706443ba0038bead1f114048e") || abort("\"/system/framework/apache-xml.jar\" has unexpected contents.");
set_progress(0.040387);
apply_patch_check("/system/framework/apache-xml.odex", "4398534fd1060c933b6ed33aa9a576e0bb238186", "cbb4012d01d74438dae6348f46b1f9765a9868d5") || abort("\"/system/framework/apache-xml.odex\" has unexpected contents.");
set_progress(0.057819);
apply_patch_check("/system/framework/bmgr.jar", "b99557c6bd2af4efee935e07235a8b25944ef60b", "fb98eb511347d530c7a0ad6388300c2dfe1e3fea") || abort("\"/system/framework/bmgr.jar\" has unexpected contents.");
set_progress(0.057823);
apply_patch_check("/system/framework/bmgr.odex", "b368e9ff937a1c0c012f69de90aea579e9738cfd", "c919714edc5e1d18c05a0f0ef91ecfb05b266fd5") || abort("\"/system/framework/bmgr.odex\" has unexpected contents.");
set_progress(0.058016);
apply_patch_check("/system/framework/bouncycastle.jar", "e7f2588601132945c146be6ead1680bfccfda360", "049623c064f6f1867d60970ff57db411391bdf73") || abort("\"/system/framework/bouncycastle.jar\" has unexpected contents.");
set_progress(0.058020);
apply_patch_check("/system/framework/bouncycastle.odex", "87a3072c98e470f2a7830ff14cc1a3d44ae16d2b", "01f11676993231fda5a2eb1f3d01aeb62ce01eca") || abort("\"/system/framework/bouncycastle.odex\" has unexpected contents.");
set_progress(0.073080);
apply_patch_check("/system/framework/bu.jar", "b99557c6bd2af4efee935e07235a8b25944ef60b", "a0430270f284832910ac091afd0292603abf61d4") || abort("\"/system/framework/bu.jar\" has unexpected contents.");
set_progress(0.073084);
apply_patch_check("/system/framework/bu.odex", "82578143ffa9be5bd2dbf80bb13a95d06682d3bd", "c0359b632a70db580b24cc44621bd98c20211a1c") || abort("\"/system/framework/bu.odex\" has unexpected contents.");
set_progress(0.073151);
apply_patch_check("/system/framework/com.android.location.provider.jar", "b99557c6bd2af4efee935e07235a8b25944ef60b", "fb98eb511347d530c7a0ad6388300c2dfe1e3fea") || abort("\"/system/framework/com.android.location.provider.jar\" has unexpected contents.");
set_progress(0.073155);
apply_patch_check("/system/framework/com.android.location.provider.odex", "3ad4ce2e96123f0aecd50f437e568d37d5e6e2a2", "2bc840c0778005e5f7905da09873170b0503c3f3") || abort("\"/system/framework/com.android.location.provider.odex\" has unexpected contents.");
set_progress(0.073431);
apply_patch_check("/system/framework/conscrypt.jar", "ea8978b1f8cd8882517412cf1de1a2b908e27949", "85ef91be60572e1de1e37ec8abc393efaa405377") || abort("\"/system/framework/conscrypt.jar\" has unexpected contents.");
set_progress(0.073435);
apply_patch_check("/system/framework/conscrypt.odex", "4517d1b9af29c8680f07e0887d06165515a7cf12", "5dc9352cc2cd8c9a1d3befa76fbf3354160c8a76") || abort("\"/system/framework/conscrypt.odex\" has unexpected contents.");
set_progress(0.078039);
apply_patch_check("/system/framework/content.jar", "b99557c6bd2af4efee935e07235a8b25944ef60b", "fb98eb511347d530c7a0ad6388300c2dfe1e3fea") || abort("\"/system/framework/content.jar\" has unexpected contents.");
set_progress(0.078043);
apply_patch_check("/system/framework/content.odex", "3e9179dd46ee00f5b31f9346b7460dcc86ac0034", "4f3c1f7e1f9bf85e49ba6aa4e1ae0514867e4c5c") || abort("\"/system/framework/content.odex\" has unexpected contents.");
set_progress(0.078269);
apply_patch_check("/system/framework/core-junit.jar", "91bf512b14f3a913e8dd88d3419c5da0afce4c50", "84f1ab0ed35560b4d0245bce33fb973a4ce2c1ea") || abort("\"/system/framework/core-junit.jar\" has unexpected contents.");
set_progress(0.078273);
apply_patch_check("/system/framework/core-junit.odex", "1af63eeb7779d7e302b8168ff7fcdc91bc2f5823", "a35eee379a7270220732a8a24f2a91a9285299d6") || abort("\"/system/framework/core-junit.odex\" has unexpected contents.");
set_progress(0.078623);
apply_patch_check("/system/framework/core.jar", "a6e2bf53282bcdc36ac56809f83d5e42b7e221f1", "43caa93b5cc0a9898ee5b9de5d35e437f4d306f1") || abort("\"/system/framework/core.jar\" has unexpected contents.");
set_progress(0.078662);
apply_patch_check("/system/framework/core.odex", "2ae0c1cd6c69b07e32dba7103f815ad8b9d1f90c", "0508dfd6aa6c4e02623a2abd93c709515034135a") || abort("\"/system/framework/core.odex\" has unexpected contents.");
set_progress(0.120414);
apply_patch_check("/system/framework/ext.jar", "9f225035bfbd03679fdc1b792bdd466269ef4673", "e8f24f91af48043d0ab8c082e85235bf3f3aef8f") || abort("\"/system/framework/ext.jar\" has unexpected contents.");
set_progress(0.128844);
apply_patch_check("/system/framework/ext.odex", "8ce5112d44b19a936e5e6ab33cc6ebdeca725002", "19fcebec032eff0b7fd8ee9dffa0733933c3d1df") || abort("\"/system/framework/ext.odex\" has unexpected contents.");
set_progress(0.147940);
apply_patch_check("/system/framework/framework-res.apk", "7c0945a1f2f7563fc26115e0d914c5df830c0a4a", "a6b6799e566a9980b213cce773165f4d0ce55621") || abort("\"/system/framework/framework-res.apk\" has unexpected contents.");
set_progress(0.294496);
apply_patch_check("/system/framework/framework.jar", "a485b9516e40ce4673fbb13950b2e9f584312781", "88261f874c369dae228cba9bd5f1312250947a8c") || abort("\"/system/framework/framework.jar\" has unexpected contents.");
set_progress(0.294623);
apply_patch_check("/system/framework/framework.odex", "7712239b3218a7e76332a76d7be9859885c8d8bc", "6130d2e9829045d3945ec7a558dda1c824e1cdb3") || abort("\"/system/framework/framework.odex\" has unexpected contents.");
set_progress(0.417228);
apply_patch_check("/system/framework/framework2.jar", "d3ba131cb03f34d402d3e56d238e5d6994047071", "9a2066cc682794786fbbf5baa82a9f3aaf01e0e7") || abort("\"/system/framework/framework2.jar\" has unexpected contents.");
set_progress(0.417232);
apply_patch_check("/system/framework/framework2.odex", "60e95dd005c74a7a5c071e10be819389c517a91f", "d091eff1b13857d14841b9e8c2b185a860651a3f") || abort("\"/system/framework/framework2.odex\" has unexpected contents.");
set_progress(0.437464);
apply_patch_check("/system/framework/ime.jar", "b99557c6bd2af4efee935e07235a8b25944ef60b", "fb98eb511347d530c7a0ad6388300c2dfe1e3fea") || abort("\"/system/framework/ime.jar\" has unexpected contents.");
set_progress(0.437468);
apply_patch_check("/system/framework/ime.odex", "1bb5c8ed149731a966bdaf4592429d97b28b1edd", "2f684dc9f14a14c082b3bb22e7bf5074e0bd3452") || abort("\"/system/framework/ime.odex\" has unexpected contents.");
set_progress(0.437557);
apply_patch_check("/system/framework/input.jar", "78224229d29acbd811d626af7d6ba28d4e65b768", "fb98eb511347d530c7a0ad6388300c2dfe1e3fea") || abort("\"/system/framework/input.jar\" has unexpected contents.");
set_progress(0.437561);
apply_patch_check("/system/framework/input.odex", "3bfed3a78eb78f0d54adeec7ec65a1d619e15711", "9ef2300fd5b0e041e7523873cd31cc8169898310") || abort("\"/system/framework/input.odex\" has unexpected contents.");
set_progress(0.437679);
apply_patch_check("/system/framework/javax.obex.jar", "164bd381858e58de3fa363c1673d9f10c35eaeff", "9a2066cc682794786fbbf5baa82a9f3aaf01e0e7") || abort("\"/system/framework/javax.obex.jar\" has unexpected contents.");
set_progress(0.437683);
apply_patch_check("/system/framework/javax.obex.odex", "5f6dbe5c3336a304063d5f83456abcd47904c38a", "dcf599ee2d1cadb0677f0e58af5db5ce9ed468e2") || abort("\"/system/framework/javax.obex.odex\" has unexpected contents.");
set_progress(0.438428);
apply_patch_check("/system/framework/media_cmd.jar", "78224229d29acbd811d626af7d6ba28d4e65b768", "fb98eb511347d530c7a0ad6388300c2dfe1e3fea") || abort("\"/system/framework/media_cmd.jar\" has unexpected contents.");
set_progress(0.438432);
apply_patch_check("/system/framework/media_cmd.odex", "5ca5eecc7cdc30e03d4be940a29f45d0690598ba", "40fdeda8199225e8542938710e06892f1b8576b3") || abort("\"/system/framework/media_cmd.odex\" has unexpected contents.");
set_progress(0.438547);
apply_patch_check("/system/framework/mms-common.jar", "726084ca67774014c204c317a2557cad6f87de7b", "a96664d6416ed53bd8161ad2e1996e03a26b5708") || abort("\"/system/framework/mms-common.jar\" has unexpected contents.");
set_progress(0.438550);
apply_patch_check("/system/framework/mms-common.odex", "0b91412430fc57682f02f7633a7cc6bd8e074c15", "6b4336e2ec2f0828e1676de50a1135cb7f1ce032") || abort("\"/system/framework/mms-common.odex\" has unexpected contents.");
set_progress(0.440203);
apply_patch_check("/system/framework/monkey.jar", "2cb8f0986e8a485394f3266939a0e73099742b56", "ab46e1249d8bd7b125e06aa287857b99c21ad45e") || abort("\"/system/framework/monkey.jar\" has unexpected contents.");
set_progress(0.440207);
apply_patch_check("/system/framework/monkey.odex", "a1e30e4eb5a90faf3c511ff6b5ce9ae671d2c52d", "27fa877ade10b06d056dca662f97793845122acc") || abort("\"/system/framework/monkey.odex\" has unexpected contents.");
set_progress(0.441729);
apply_patch_check("/system/framework/nullwebview.jar", "78224229d29acbd811d626af7d6ba28d4e65b768", "fb98eb511347d530c7a0ad6388300c2dfe1e3fea") || abort("\"/system/framework/nullwebview.jar\" has unexpected contents.");
set_progress(0.441733);
apply_patch_check("/system/framework/nullwebview.odex", "d786df8d8d933a2c9fadcd8761cf0ba3ac37a8d1", "cd87e49a40b99fb40cf4e44c1736ba729639038a") || abort("\"/system/framework/nullwebview.odex\" has unexpected contents.");
set_progress(0.441768);
apply_patch_check("/system/framework/okhttp.jar", "ea8978b1f8cd8882517412cf1de1a2b908e27949", "85ef91be60572e1de1e37ec8abc393efaa405377") || abort("\"/system/framework/okhttp.jar\" has unexpected contents.");
set_progress(0.441771);
apply_patch_check("/system/framework/okhttp.odex", "e12ce241a323740f67ff3fb1a1a98cf99fdf90be", "7faf0d64e524ca64ddb0104b909ea51410f8ffeb") || abort("\"/system/framework/okhttp.odex\" has unexpected contents.");
set_progress(0.444791);
apply_patch_check("/system/framework/pm.jar", "78224229d29acbd811d626af7d6ba28d4e65b768", "fb98eb511347d530c7a0ad6388300c2dfe1e3fea") || abort("\"/system/framework/pm.jar\" has unexpected contents.");
set_progress(0.444795);
apply_patch_check("/system/framework/pm.odex", "f8a5b14bfec3a6e969296684cad5c749e42ac3a7", "1ca20b695064e4a6f681123f3446eb26ac0322a8") || abort("\"/system/framework/pm.odex\" has unexpected contents.");
set_progress(0.445321);
apply_patch_check("/system/framework/services.jar", "fd23fd93dac40e7d890018e6886e1742fc7e1e70", "17ca4fd6109619eb73356b4f8391c2783e1a4529") || abort("\"/system/framework/services.jar\" has unexpected contents.");
set_progress(0.445325);
apply_patch_check("/system/framework/services.odex", "cdf2bc72eb5aa995f7fca7f5618706299ca7fe68", "351b2ea1c1adcf241c23e1dbdf188e42fcad8b79") || abort("\"/system/framework/services.odex\" has unexpected contents.");
set_progress(0.490565);
apply_patch_check("/system/framework/settings.jar", "78224229d29acbd811d626af7d6ba28d4e65b768", "ab46e1249d8bd7b125e06aa287857b99c21ad45e") || abort("\"/system/framework/settings.jar\" has unexpected contents.");
set_progress(0.490569);
apply_patch_check("/system/framework/settings.odex", "53867c06de7db06239e7a8a0b234a5761efcae83", "9c244906a0a5e89cbbc6c37b417cf45a4c73dfb6") || abort("\"/system/framework/settings.odex\" has unexpected contents.");
set_progress(0.490675);
apply_patch_check("/system/framework/svc.jar", "78224229d29acbd811d626af7d6ba28d4e65b768", "fb98eb511347d530c7a0ad6388300c2dfe1e3fea") || abort("\"/system/framework/svc.jar\" has unexpected contents.");
set_progress(0.490679);
apply_patch_check("/system/framework/svc.odex", "b2b6e3986a14d0289f70795c0b1fb6d2ffd2af4d", "df89656a9347169f97ea258f53de02e619f897de") || abort("\"/system/framework/svc.odex\" has unexpected contents.");
set_progress(0.490814);
apply_patch_check("/system/framework/telephony-common.jar", "a3cc1e0a65730fa3b346fafac457a1e41b8532ed", "13d3646b56f9a2a236f5be42d6b0b77a48085561") || abort("\"/system/framework/telephony-common.jar\" has unexpected contents.");
set_progress(0.490818);
apply_patch_check("/system/framework/telephony-common.odex", "b9f8a44a0ee2cf84710388f8fa52f80ce6159199", "dcd470c430e82b9eb847915f17e6a7d1639adc9c") || abort("\"/system/framework/telephony-common.odex\" has unexpected contents.");
set_progress(0.507214);
apply_patch_check("/system/framework/uiautomator.jar", "890a20937725f50037c0bb79f3866f898868d170", "3bfe2ee0adccfcf2b493aefd7b12f774243954b4") || abort("\"/system/framework/uiautomator.jar\" has unexpected contents.");
set_progress(0.507218);
apply_patch_check("/system/framework/uiautomator.odex", "a8febccf67cc3b95769709f6c166b60427508b74", "b2fc2bd1c68ec047e23c63ba93d8a468dfbb0b6e") || abort("\"/system/framework/uiautomator.odex\" has unexpected contents.");
set_progress(0.508671);
apply_patch_check("/system/framework/voip-common.jar", "78224229d29acbd811d626af7d6ba28d4e65b768", "9a2066cc682794786fbbf5baa82a9f3aaf01e0e7") || abort("\"/system/framework/voip-common.jar\" has unexpected contents.");
set_progress(0.508675);
apply_patch_check("/system/framework/voip-common.odex", "59de6bb87428ed522dbce885832df4e2b8947e4b", "e1919897389b0d04545215f575948451a2974af4") || abort("\"/system/framework/voip-common.odex\" has unexpected contents.");
set_progress(0.510847);
apply_patch_check("/system/framework/wm.jar", "78224229d29acbd811d626af7d6ba28d4e65b768", "fb98eb511347d530c7a0ad6388300c2dfe1e3fea") || abort("\"/system/framework/wm.jar\" has unexpected contents.");
set_progress(0.510851);
apply_patch_check("/system/framework/wm.odex", "955a3475f593928b3d8099d5fc1afb9582139eeb", "e996c94093d311c2b9c6daa72579d3380f81dd81") || abort("\"/system/framework/wm.odex\" has unexpected contents.");
set_progress(0.510938);
apply_patch_check("/system/lib/libLLVM.so", "1926e39c9b162e9c6a0adbbf2c69d64b88ffef29", "cc7db1878ecef72cf4eb445ca388075b513720cb") || abort("\"/system/lib/libLLVM.so\" has unexpected contents.");
set_progress(0.617607);
apply_patch_check("/system/lib/libbcc.sha1.so", "0c7c7c0318670a5e0d1766534a75bfc907dff588", "1dbba88babf5e5f31255148017159ca4939a7e0d") || abort("\"/system/lib/libbcc.sha1.so\" has unexpected contents.");
set_progress(0.617672);
apply_patch_check("/system/lib/libbcc.so", "deeb46b9bc519eb9f50f0f4ac949e189bafddd9f", "947f1d4ccbb5194760d66b3e5655714964b405b0") || abort("\"/system/lib/libbcc.so\" has unexpected contents.");
set_progress(0.619346);
apply_patch_check("/system/lib/libmdnssd.so", "4b405f503063c5e06da248a76289a369ee6378a3", "5d08b6d8204b129c06df2889b59d5fc1f17adab2") || abort("\"/system/lib/libmdnssd.so\" has unexpected contents.");
set_progress(0.619620);
apply_patch_check("/system/priv-app/BackupRestoreConfirmation.apk", "52aa6493aaf2ed1cbd94d217c3233e212fb7f31c", "5738a1b5acc28a5fb922cf303da67d971b1967be") || abort("\"/system/priv-app/BackupRestoreConfirmation.apk\" has unexpected contents.");
set_progress(0.621270);
apply_patch_check("/system/priv-app/CalendarProvider.apk", "bd36b3e609119e3db02962bb574c19824e60cca8", "7c8a7c892027303d3751d93da73aa403943e62b4") || abort("\"/system/priv-app/CalendarProvider.apk\" has unexpected contents.");
set_progress(0.622393);
apply_patch_check("/system/priv-app/ClockworkBugReportSender.apk", "5ec3e482ace86113db0d1463703a98e61486a25a", "164749e86cd340fb7de5df717c86d15f95f89497") || abort("\"/system/priv-app/ClockworkBugReportSender.apk\" has unexpected contents.");
set_progress(0.625102);
apply_patch_check("/system/priv-app/ClockworkHomeGoogle.apk", "8ae5b77c28dc3583d1bce3d421f424927dabc0e7", "2373c20e66e6b7312d77e8115e508252f4d6b427") || abort("\"/system/priv-app/ClockworkHomeGoogle.apk\" has unexpected contents.");
set_progress(0.862916);
apply_patch_check("/system/priv-app/ClockworkPackageInstaller.apk", "302f45a61cd02c0a867ac2077ed197cedc3e2e91", "b22149c55cd19c47ab3744143b3bc9ac112d7914") || abort("\"/system/priv-app/ClockworkPackageInstaller.apk\" has unexpected contents.");
set_progress(0.865480);
apply_patch_check("/system/priv-app/ClockworkPhotosWatchFace.apk", "6a486c141c67163a26d9b6618e8c51b1130707a7", "2b5772e4af6ef6c96c141e83f264ede26475d7ac") || abort("\"/system/priv-app/ClockworkPhotosWatchFace.apk\" has unexpected contents.");
set_progress(0.899427);
apply_patch_check("/system/priv-app/ClockworkSettings.apk", "478a18b91a0a8c684810ff4517842e86c6784d6b", "63b1f176e4696956437a809fb43941aeec1c5573") || abort("\"/system/priv-app/ClockworkSettings.apk\" has unexpected contents.");
set_progress(0.903726);
apply_patch_check("/system/priv-app/ClockworkSetup.apk", "0f7d9063e5b3463cca5738fcf2ad892f75009098", "b1ba61860851cf07661bb4980c240ba48e84c9be") || abort("\"/system/priv-app/ClockworkSetup.apk\" has unexpected contents.");
set_progress(0.907099);
apply_patch_check("/system/priv-app/ContactsProvider.apk", "5a97a8dfcf957f29da42c3a59d1967f1ac21c2ae", "34cc46e0eda341cc7256e5768efca3d2cec3721d") || abort("\"/system/priv-app/ContactsProvider.apk\" has unexpected contents.");
set_progress(0.908509);
apply_patch_check("/system/priv-app/DefaultContainerService.apk", "5a04cd780d7ee7f442876e3e79bacf0c8bf53d41", "8f49a1a10ff76170ae4f891a3f48e6d051c00c29") || abort("\"/system/priv-app/DefaultContainerService.apk\" has unexpected contents.");
set_progress(0.908635);
apply_patch_check("/system/priv-app/DownloadProvider.apk", "69e701b45809e4db6b067e8d93bd837956cd4ab9", "58649b50e1cb098f8f2d7da0ea3202719fd0a596") || abort("\"/system/priv-app/DownloadProvider.apk\" has unexpected contents.");
set_progress(0.912618);
apply_patch_check("/system/priv-app/FusedLocation.apk", "76620b0a11a2d677d5cfeb2376cc70753933bbc2", "0ee98fef3d704d3eea07a56f3f5bd29d527e4d07") || abort("\"/system/priv-app/FusedLocation.apk\" has unexpected contents.");
set_progress(0.912728);
apply_patch_check("/system/priv-app/GoogleServicesFramework.apk", "da9a2b396947550e8375767fa757445f52638eb9", "919d44238a1019bd99e7e93d04fba03154888ed3") || abort("\"/system/priv-app/GoogleServicesFramework.apk\" has unexpected contents.");
set_progress(0.934561);
apply_patch_check("/system/priv-app/InputDevices.apk", "5fcaa1eb7803fe24fc779582319d849fe65e3497", "8984505665afac82f10443e055602e5162fa2481") || abort("\"/system/priv-app/InputDevices.apk\" has unexpected contents.");
set_progress(0.936231);
apply_patch_check("/system/priv-app/MediaProvider.apk", "538dde9b8967bb1b793460226f9f70781703e2bd", "7a5b33f83f23c5a9f283f29ad62e58d2ca2093d9") || abort("\"/system/priv-app/MediaProvider.apk\" has unexpected contents.");
set_progress(0.936994);
apply_patch_check("/system/priv-app/MinModWatchfaces.apk", "f408fc50d86346e8abcb43bf76276cc603c8c429", "d153aac754d85c55c00831f9cf80477b7677e9a0") || abort("\"/system/priv-app/MinModWatchfaces.apk\" has unexpected contents.");
set_progress(0.942214);
apply_patch_check("/system/priv-app/SettingsProvider.apk", "6fa8679854d21c81e5cfad9adab52641ac08221c", "f558576e3b323f35110e0253d1bebb4224a4bbbc") || abort("\"/system/priv-app/SettingsProvider.apk\" has unexpected contents.");
set_progress(0.943379);
apply_patch_check("/system/priv-app/Shell.apk", "b4ce9737f7480ed8077deb1659f566c154ca0c5f", "0589420448abe1a7de9384bdfdf4b049f2249cba") || abort("\"/system/priv-app/Shell.apk\" has unexpected contents.");
set_progress(0.943893);
apply_patch_check("EMMC:/dev/block/mmcblk0p9:4438016:19549de458a0d78e34dc7baf37a0155416f163e5:4438016:4a74b424059af110a155cad1a28748b95d4b2794") || abort("\"EMMC:/dev/block/mmcblk0p9:4438016:19549de458a0d78e34dc7baf37a0155416f163e5:4438016:4a74b424059af110a155cad1a28748b95d4b2794\" has unexpected contents.");
set_progress(1.000000);
apply_patch_space(18810969) || abort("Not enough free space on /system to apply patches.");

# ---- start making changes here ----

ui_print("Removing unneeded files...");
delete("/system/recovery.img");
show_progress(0.800000, 0);
ui_print("Patching system files...");
apply_patch("/system/app/Bluetooth.apk", "-",
            4618a1716659f09e858adf1db0a38749c7d9d824, 505196,
            924e1adde2f152072a02e635c6ea17036a06ea07, package_extract_file("patch/system/app/Bluetooth.apk.p"));
set_progress(0.006387);
apply_patch("/system/app/CertInstaller.apk", "-",
            ff31b84a69b04aa54e008d86f9499705c994e7f4, 143725,
            3a7b914c5cf8080be39ca91de23ecfffcb927d60, package_extract_file("patch/system/app/CertInstaller.apk.p"));
set_progress(0.008204);
apply_patch("/system/app/DeskClockMicroApp.apk", "-",
            f073598072b3c507edfcc15c761ebc40713e2611, 1249073,
            2f02ce134638c93356fa8ce16e05d41e60b0c2fb, package_extract_file("patch/system/app/DeskClockMicroApp.apk.p"));
set_progress(0.023995);
apply_patch("/system/app/UserDictionaryProvider.apk", "-",
            371aed8e04a301370e8e536db7d1820cfd9db346, 3516,
            ba556d271b2abda362be175555667798387f5f33, package_extract_file("patch/system/app/UserDictionaryProvider.apk.p"));
set_progress(0.024039);
apply_patch("/system/bin/debuggerd", "-",
            715e1f1cb3040edf0c2d86fc585f1d11566c7d59, 25888,
            0ca72be73a6bb8ab0f98a4073be659332236f623, package_extract_file("patch/system/bin/debuggerd.p"));
set_progress(0.024367);
apply_patch("/system/etc/NOTICE.html.gz", "-",
            d7da7ad5f1eac0c1a89b9dbd8212288edbe06a99, 103291,
            7bfc702f65008e8946e4da2f6bdabd32151788ff, package_extract_file("patch/system/etc/NOTICE.html.gz.p"));
set_progress(0.025673);
apply_patch("/system/etc/firmware/m4sensorhub-p2_5_minnow.bin", "-",
            fdcf3bc46d21a5fa0a32da9db724078e4b4080a8, 145428,
            69ce955057d6b0f83937f4ce3ff5c5d5bd13de6b, package_extract_file("patch/system/etc/firmware/m4sensorhub-p2_5_minnow.bin.p"));
set_progress(0.027511);
apply_patch("/system/etc/recovery-resource.dat", "-",
            a7269fe8bf902346d080cba489831ca8d7a0bfc9, 500895,
            5446896c7d6ac8d8ce5129b903340f3e3fec6d69, package_extract_file("patch/system/etc/recovery-resource.dat.p"));
set_progress(0.033844);
apply_patch("/system/etc/security/otacerts.zip", "-",
            5e31d4008a653efd40ded8a70acf9f59c278ebab, 1556,
            6f9f80aa1c5dca3c55f789182b7d58b669461bbb, package_extract_file("patch/system/etc/security/otacerts.zip.p"));
set_progress(0.033863);
apply_patch("/system/framework/am.jar", "-",
            b99557c6bd2af4efee935e07235a8b25944ef60b, 313,
            fb98eb511347d530c7a0ad6388300c2dfe1e3fea, package_extract_file("patch/system/framework/am.jar.p"));
set_progress(0.033867);
apply_patch("/system/framework/am.odex", "-",
            869a46878f9951e28e8758619a7d911e86bbe906, 48840,
            b1e349b6ee2c3739d64f8947a3eea14f1d7f1e6d, package_extract_file("patch/system/framework/am.odex.p"));
set_progress(0.034485);
apply_patch("/system/framework/android.policy.jar", "-",
            54e39d9fc558d5077a312ff637ba39338b27e138, 313,
            d672294c98f0d41b9b49070c0293d11399c16e16, package_extract_file("patch/system/framework/android.policy.jar.p"));
set_progress(0.034489);
apply_patch("/system/framework/android.policy.odex", "-",
            97a6a0f96c0223876035469edb1594714657911a, 262720,
            d7be52caacf7885843322c70005105c824c49635, package_extract_file("patch/system/framework/android.policy.odex.p"));
set_progress(0.037810);
apply_patch("/system/framework/android.test.runner.jar", "-",
            9be015d9a545d376d12fa850168327814f460dd7, 313,
            13d3646b56f9a2a236f5be42d6b0b77a48085561, package_extract_file("patch/system/framework/android.test.runner.jar.p"));
set_progress(0.037814);
apply_patch("/system/framework/android.test.runner.odex", "-",
            7228bf11228985c9a787c88ca71404ef6f7cdda5, 189888,
            35a80687487fa4ea59eccd37fd09a90a5f10a5b8, package_extract_file("patch/system/framework/android.test.runner.odex.p"));
set_progress(0.040215);
apply_patch("/system/framework/apache-xml.jar", "-",
            c3798ff79079f11b0e3ec7c72a0029e9a0831193, 18027,
            c29155322539dfb706443ba0038bead1f114048e, package_extract_file("patch/system/framework/apache-xml.jar.p"));
set_progress(0.040443);
apply_patch("/system/framework/apache-xml.odex", "-",
            4398534fd1060c933b6ed33aa9a576e0bb238186, 1378880,
            cbb4012d01d74438dae6348f46b1f9765a9868d5, package_extract_file("patch/system/framework/apache-xml.odex.p"));
set_progress(0.057875);
apply_patch("/system/framework/bmgr.jar", "-",
            b99557c6bd2af4efee935e07235a8b25944ef60b, 313,
            fb98eb511347d530c7a0ad6388300c2dfe1e3fea, package_extract_file("patch/system/framework/bmgr.jar.p"));
set_progress(0.057879);
apply_patch("/system/framework/bmgr.odex", "-",
            b368e9ff937a1c0c012f69de90aea579e9738cfd, 15272,
            c919714edc5e1d18c05a0f0ef91ecfb05b266fd5, package_extract_file("patch/system/framework/bmgr.odex.p"));
set_progress(0.058072);
apply_patch("/system/framework/bouncycastle.jar", "-",
            e7f2588601132945c146be6ead1680bfccfda360, 313,
            049623c064f6f1867d60970ff57db411391bdf73, package_extract_file("patch/system/framework/bouncycastle.jar.p"));
set_progress(0.058076);
apply_patch("/system/framework/bouncycastle.odex", "-",
            87a3072c98e470f2a7830ff14cc1a3d44ae16d2b, 1191216,
            01f11676993231fda5a2eb1f3d01aeb62ce01eca, package_extract_file("patch/system/framework/bouncycastle.odex.p"));
set_progress(0.073136);
apply_patch("/system/framework/bu.jar", "-",
            b99557c6bd2af4efee935e07235a8b25944ef60b, 313,
            a0430270f284832910ac091afd0292603abf61d4, package_extract_file("patch/system/framework/bu.jar.p"));
set_progress(0.073139);
apply_patch("/system/framework/bu.odex", "-",
            82578143ffa9be5bd2dbf80bb13a95d06682d3bd, 5304,
            c0359b632a70db580b24cc44621bd98c20211a1c, package_extract_file("patch/system/framework/bu.odex.p"));
set_progress(0.073207);
apply_patch("/system/framework/com.android.location.provider.jar",
            "-", b99557c6bd2af4efee935e07235a8b25944ef60b, 313,
            fb98eb511347d530c7a0ad6388300c2dfe1e3fea, package_extract_file("patch/system/framework/com.android.location.provider.jar.p"));
set_progress(0.073210);
apply_patch("/system/framework/com.android.location.provider.odex",
            "-", 3ad4ce2e96123f0aecd50f437e568d37d5e6e2a2, 21848,
            2bc840c0778005e5f7905da09873170b0503c3f3, package_extract_file("patch/system/framework/com.android.location.provider.odex.p"));
set_progress(0.073487);
apply_patch("/system/framework/conscrypt.jar", "-",
            ea8978b1f8cd8882517412cf1de1a2b908e27949, 313,
            85ef91be60572e1de1e37ec8abc393efaa405377, package_extract_file("patch/system/framework/conscrypt.jar.p"));
set_progress(0.073491);
apply_patch("/system/framework/conscrypt.odex", "-",
            4517d1b9af29c8680f07e0887d06165515a7cf12, 364208,
            5dc9352cc2cd8c9a1d3befa76fbf3354160c8a76, package_extract_file("patch/system/framework/conscrypt.odex.p"));
set_progress(0.078095);
apply_patch("/system/framework/content.jar", "-",
            b99557c6bd2af4efee935e07235a8b25944ef60b, 313,
            fb98eb511347d530c7a0ad6388300c2dfe1e3fea, package_extract_file("patch/system/framework/content.jar.p"));
set_progress(0.078099);
apply_patch("/system/framework/content.odex", "-",
            3e9179dd46ee00f5b31f9346b7460dcc86ac0034, 17832,
            4f3c1f7e1f9bf85e49ba6aa4e1ae0514867e4c5c, package_extract_file("patch/system/framework/content.odex.p"));
set_progress(0.078324);
apply_patch("/system/framework/core-junit.jar", "-",
            91bf512b14f3a913e8dd88d3419c5da0afce4c50, 313,
            84f1ab0ed35560b4d0245bce33fb973a4ce2c1ea, package_extract_file("patch/system/framework/core-junit.jar.p"));
set_progress(0.078328);
apply_patch("/system/framework/core-junit.odex", "-",
            1af63eeb7779d7e302b8168ff7fcdc91bc2f5823, 27688,
            a35eee379a7270220732a8a24f2a91a9285299d6, package_extract_file("patch/system/framework/core-junit.odex.p"));
set_progress(0.078678);
apply_patch("/system/framework/core.jar", "-",
            a6e2bf53282bcdc36ac56809f83d5e42b7e221f1, 3121,
            43caa93b5cc0a9898ee5b9de5d35e437f4d306f1, package_extract_file("patch/system/framework/core.jar.p"));
set_progress(0.078718);
apply_patch("/system/framework/core.odex", "-",
            2ae0c1cd6c69b07e32dba7103f815ad8b9d1f90c, 3302536,
            0508dfd6aa6c4e02623a2abd93c709515034135a, package_extract_file("patch/system/framework/core.odex.p"));
set_progress(0.120470);
apply_patch("/system/framework/ext.jar", "-",
            9f225035bfbd03679fdc1b792bdd466269ef4673, 666790,
            e8f24f91af48043d0ab8c082e85235bf3f3aef8f, package_extract_file("patch/system/framework/ext.jar.p"));
set_progress(0.128899);
apply_patch("/system/framework/ext.odex", "-",
            8ce5112d44b19a936e5e6ab33cc6ebdeca725002, 1510512,
            19fcebec032eff0b7fd8ee9dffa0733933c3d1df, package_extract_file("patch/system/framework/ext.odex.p"));
set_progress(0.147996);
apply_patch("/system/framework/framework-res.apk", "-",
            7c0945a1f2f7563fc26115e0d914c5df830c0a4a, 11592483,
            a6b6799e566a9980b213cce773165f4d0ce55621, package_extract_file("patch/system/framework/framework-res.apk.p"));
set_progress(0.294552);
apply_patch("/system/framework/framework.jar", "-",
            a485b9516e40ce4673fbb13950b2e9f584312781, 10068,
            88261f874c369dae228cba9bd5f1312250947a8c, package_extract_file("patch/system/framework/framework.jar.p"));
set_progress(0.294679);
apply_patch("/system/framework/framework.odex", "-",
            7712239b3218a7e76332a76d7be9859885c8d8bc, 9697952,
            6130d2e9829045d3945ec7a558dda1c824e1cdb3, package_extract_file("patch/system/framework/framework.odex.p"));
set_progress(0.417284);
apply_patch("/system/framework/framework2.jar", "-",
            d3ba131cb03f34d402d3e56d238e5d6994047071, 313,
            9a2066cc682794786fbbf5baa82a9f3aaf01e0e7, package_extract_file("patch/system/framework/framework2.jar.p"));
set_progress(0.417288);
apply_patch("/system/framework/framework2.odex", "-",
            60e95dd005c74a7a5c071e10be819389c517a91f, 1600320,
            d091eff1b13857d14841b9e8c2b185a860651a3f, package_extract_file("patch/system/framework/framework2.odex.p"));
set_progress(0.437519);
apply_patch("/system/framework/ime.jar", "-",
            b99557c6bd2af4efee935e07235a8b25944ef60b, 313,
            fb98eb511347d530c7a0ad6388300c2dfe1e3fea, package_extract_file("patch/system/framework/ime.jar.p"));
set_progress(0.437523);
apply_patch("/system/framework/ime.odex", "-",
            1bb5c8ed149731a966bdaf4592429d97b28b1edd, 7056,
            2f684dc9f14a14c082b3bb22e7bf5074e0bd3452, package_extract_file("patch/system/framework/ime.odex.p"));
set_progress(0.437612);
apply_patch("/system/framework/input.jar", "-",
            78224229d29acbd811d626af7d6ba28d4e65b768, 313,
            fb98eb511347d530c7a0ad6388300c2dfe1e3fea, package_extract_file("patch/system/framework/input.jar.p"));
set_progress(0.437616);
apply_patch("/system/framework/input.odex", "-",
            3bfed3a78eb78f0d54adeec7ec65a1d619e15711, 9352,
            9ef2300fd5b0e041e7523873cd31cc8169898310, package_extract_file("patch/system/framework/input.odex.p"));
set_progress(0.437735);
apply_patch("/system/framework/javax.obex.jar", "-",
            164bd381858e58de3fa363c1673d9f10c35eaeff, 313,
            9a2066cc682794786fbbf5baa82a9f3aaf01e0e7, package_extract_file("patch/system/framework/javax.obex.jar.p"));
set_progress(0.437739);
apply_patch("/system/framework/javax.obex.odex", "-",
            5f6dbe5c3336a304063d5f83456abcd47904c38a, 58952,
            dcf599ee2d1cadb0677f0e58af5db5ce9ed468e2, package_extract_file("patch/system/framework/javax.obex.odex.p"));
set_progress(0.438484);
apply_patch("/system/framework/media_cmd.jar", "-",
            78224229d29acbd811d626af7d6ba28d4e65b768, 313,
            fb98eb511347d530c7a0ad6388300c2dfe1e3fea, package_extract_file("patch/system/framework/media_cmd.jar.p"));
set_progress(0.438488);
apply_patch("/system/framework/media_cmd.odex", "-",
            5ca5eecc7cdc30e03d4be940a29f45d0690598ba, 9048,
            40fdeda8199225e8542938710e06892f1b8576b3, package_extract_file("patch/system/framework/media_cmd.odex.p"));
set_progress(0.438602);
apply_patch("/system/framework/mms-common.jar", "-",
            726084ca67774014c204c317a2557cad6f87de7b, 313,
            a96664d6416ed53bd8161ad2e1996e03a26b5708, package_extract_file("patch/system/framework/mms-common.jar.p"));
set_progress(0.438606);
apply_patch("/system/framework/mms-common.odex", "-",
            0b91412430fc57682f02f7633a7cc6bd8e074c15, 130736,
            6b4336e2ec2f0828e1676de50a1135cb7f1ce032, package_extract_file("patch/system/framework/mms-common.odex.p"));
set_progress(0.440259);
apply_patch("/system/framework/monkey.jar", "-",
            2cb8f0986e8a485394f3266939a0e73099742b56, 313,
            ab46e1249d8bd7b125e06aa287857b99c21ad45e, package_extract_file("patch/system/framework/monkey.jar.p"));
set_progress(0.440263);
apply_patch("/system/framework/monkey.odex", "-",
            a1e30e4eb5a90faf3c511ff6b5ce9ae671d2c52d, 120384,
            27fa877ade10b06d056dca662f97793845122acc, package_extract_file("patch/system/framework/monkey.odex.p"));
set_progress(0.441785);
apply_patch("/system/framework/nullwebview.jar", "-",
            78224229d29acbd811d626af7d6ba28d4e65b768, 313,
            fb98eb511347d530c7a0ad6388300c2dfe1e3fea, package_extract_file("patch/system/framework/nullwebview.jar.p"));
set_progress(0.441789);
apply_patch("/system/framework/nullwebview.odex", "-",
            d786df8d8d933a2c9fadcd8761cf0ba3ac37a8d1, 2720,
            cd87e49a40b99fb40cf4e44c1736ba729639038a, package_extract_file("patch/system/framework/nullwebview.odex.p"));
set_progress(0.441823);
apply_patch("/system/framework/okhttp.jar", "-",
            ea8978b1f8cd8882517412cf1de1a2b908e27949, 313,
            85ef91be60572e1de1e37ec8abc393efaa405377, package_extract_file("patch/system/framework/okhttp.jar.p"));
set_progress(0.441827);
apply_patch("/system/framework/okhttp.odex", "-",
            e12ce241a323740f67ff3fb1a1a98cf99fdf90be, 238816,
            7faf0d64e524ca64ddb0104b909ea51410f8ffeb, package_extract_file("patch/system/framework/okhttp.odex.p"));
set_progress(0.444846);
apply_patch("/system/framework/pm.jar", "-",
            78224229d29acbd811d626af7d6ba28d4e65b768, 313,
            fb98eb511347d530c7a0ad6388300c2dfe1e3fea, package_extract_file("patch/system/framework/pm.jar.p"));
set_progress(0.444850);
apply_patch("/system/framework/pm.odex", "-",
            f8a5b14bfec3a6e969296684cad5c749e42ac3a7, 41624,
            1ca20b695064e4a6f681123f3446eb26ac0322a8, package_extract_file("patch/system/framework/pm.odex.p"));
set_progress(0.445377);
apply_patch("/system/framework/services.jar", "-",
            fd23fd93dac40e7d890018e6886e1742fc7e1e70, 313,
            17ca4fd6109619eb73356b4f8391c2783e1a4529, package_extract_file("patch/system/framework/services.jar.p"));
set_progress(0.445381);
apply_patch("/system/framework/services.odex", "-",
            cdf2bc72eb5aa995f7fca7f5618706299ca7fe68, 3578512,
            351b2ea1c1adcf241c23e1dbdf188e42fcad8b79, package_extract_file("patch/system/framework/services.odex.p"));
set_progress(0.490621);
apply_patch("/system/framework/settings.jar", "-",
            78224229d29acbd811d626af7d6ba28d4e65b768, 313,
            ab46e1249d8bd7b125e06aa287857b99c21ad45e, package_extract_file("patch/system/framework/settings.jar.p"));
set_progress(0.490625);
apply_patch("/system/framework/settings.odex", "-",
            53867c06de7db06239e7a8a0b234a5761efcae83, 8376,
            9c244906a0a5e89cbbc6c37b417cf45a4c73dfb6, package_extract_file("patch/system/framework/settings.odex.p"));
set_progress(0.490731);
apply_patch("/system/framework/svc.jar", "-",
            78224229d29acbd811d626af7d6ba28d4e65b768, 313,
            fb98eb511347d530c7a0ad6388300c2dfe1e3fea, package_extract_file("patch/system/framework/svc.jar.p"));
set_progress(0.490735);
apply_patch("/system/framework/svc.odex", "-",
            b2b6e3986a14d0289f70795c0b1fb6d2ffd2af4d, 10632,
            df89656a9347169f97ea258f53de02e619f897de, package_extract_file("patch/system/framework/svc.odex.p"));
set_progress(0.490869);
apply_patch("/system/framework/telephony-common.jar", "-",
            a3cc1e0a65730fa3b346fafac457a1e41b8532ed, 313,
            13d3646b56f9a2a236f5be42d6b0b77a48085561, package_extract_file("patch/system/framework/telephony-common.jar.p"));
set_progress(0.490873);
apply_patch("/system/framework/telephony-common.odex", "-",
            b9f8a44a0ee2cf84710388f8fa52f80ce6159199, 1296912,
            dcd470c430e82b9eb847915f17e6a7d1639adc9c, package_extract_file("patch/system/framework/telephony-common.odex.p"));
set_progress(0.507269);
apply_patch("/system/framework/uiautomator.jar", "-",
            890a20937725f50037c0bb79f3866f898868d170, 313,
            3bfe2ee0adccfcf2b493aefd7b12f774243954b4, package_extract_file("patch/system/framework/uiautomator.jar.p"));
set_progress(0.507273);
apply_patch("/system/framework/uiautomator.odex", "-",
            a8febccf67cc3b95769709f6c166b60427508b74, 114928,
            b2fc2bd1c68ec047e23c63ba93d8a468dfbb0b6e, package_extract_file("patch/system/framework/uiautomator.odex.p"));
set_progress(0.508726);
apply_patch("/system/framework/voip-common.jar", "-",
            78224229d29acbd811d626af7d6ba28d4e65b768, 313,
            9a2066cc682794786fbbf5baa82a9f3aaf01e0e7, package_extract_file("patch/system/framework/voip-common.jar.p"));
set_progress(0.508730);
apply_patch("/system/framework/voip-common.odex", "-",
            59de6bb87428ed522dbce885832df4e2b8947e4b, 171856,
            e1919897389b0d04545215f575948451a2974af4, package_extract_file("patch/system/framework/voip-common.odex.p"));
set_progress(0.510903);
apply_patch("/system/framework/wm.jar", "-",
            78224229d29acbd811d626af7d6ba28d4e65b768, 313,
            fb98eb511347d530c7a0ad6388300c2dfe1e3fea, package_extract_file("patch/system/framework/wm.jar.p"));
set_progress(0.510907);
apply_patch("/system/framework/wm.odex", "-",
            955a3475f593928b3d8099d5fc1afb9582139eeb, 6880,
            e996c94093d311c2b9c6daa72579d3380f81dd81, package_extract_file("patch/system/framework/wm.odex.p"));
set_progress(0.510994);
apply_patch("/system/lib/libLLVM.so", "-",
            1926e39c9b162e9c6a0adbbf2c69d64b88ffef29, 8437464,
            cc7db1878ecef72cf4eb445ca388075b513720cb, package_extract_file("patch/system/lib/libLLVM.so.p"));
set_progress(0.617663);
apply_patch("/system/lib/libbcc.sha1.so", "-",
            0c7c7c0318670a5e0d1766534a75bfc907dff588, 5148,
            1dbba88babf5e5f31255148017159ca4939a7e0d, package_extract_file("patch/system/lib/libbcc.sha1.so.p"));
set_progress(0.617728);
apply_patch("/system/lib/libbcc.so", "-",
            deeb46b9bc519eb9f50f0f4ac949e189bafddd9f, 132408,
            947f1d4ccbb5194760d66b3e5655714964b405b0, package_extract_file("patch/system/lib/libbcc.so.p"));
set_progress(0.619402);
apply_patch("/system/lib/libmdnssd.so", "-",
            4b405f503063c5e06da248a76289a369ee6378a3, 21680,
            5d08b6d8204b129c06df2889b59d5fc1f17adab2, package_extract_file("patch/system/lib/libmdnssd.so.p"));
set_progress(0.619676);
apply_patch("/system/priv-app/BackupRestoreConfirmation.apk", "-",
            52aa6493aaf2ed1cbd94d217c3233e212fb7f31c, 130525,
            5738a1b5acc28a5fb922cf303da67d971b1967be, package_extract_file("patch/system/priv-app/BackupRestoreConfirmation.apk.p"));
set_progress(0.621326);
apply_patch("/system/priv-app/CalendarProvider.apk", "-",
            bd36b3e609119e3db02962bb574c19824e60cca8, 88754,
            7c8a7c892027303d3751d93da73aa403943e62b4, package_extract_file("patch/system/priv-app/CalendarProvider.apk.p"));
set_progress(0.622448);
apply_patch("/system/priv-app/ClockworkBugReportSender.apk", "-",
            5ec3e482ace86113db0d1463703a98e61486a25a, 214296,
            164749e86cd340fb7de5df717c86d15f95f89497, package_extract_file("patch/system/priv-app/ClockworkBugReportSender.apk.p"));
set_progress(0.625157);
apply_patch("/system/priv-app/ClockworkHomeGoogle.apk", "-",
            8ae5b77c28dc3583d1bce3d421f424927dabc0e7, 18810959,
            2373c20e66e6b7312d77e8115e508252f4d6b427, package_extract_file("patch/system/priv-app/ClockworkHomeGoogle.apk.p"));
set_progress(0.862972);
apply_patch("/system/priv-app/ClockworkPackageInstaller.apk", "-",
            302f45a61cd02c0a867ac2077ed197cedc3e2e91, 202772,
            b22149c55cd19c47ab3744143b3bc9ac112d7914, package_extract_file("patch/system/priv-app/ClockworkPackageInstaller.apk.p"));
set_progress(0.865535);
apply_patch("/system/priv-app/ClockworkPhotosWatchFace.apk", "-",
            6a486c141c67163a26d9b6618e8c51b1130707a7, 2685200,
            2b5772e4af6ef6c96c141e83f264ede26475d7ac, package_extract_file("patch/system/priv-app/ClockworkPhotosWatchFace.apk.p"));
set_progress(0.899482);
apply_patch("/system/priv-app/ClockworkSettings.apk", "-",
            478a18b91a0a8c684810ff4517842e86c6784d6b, 340081,
            63b1f176e4696956437a809fb43941aeec1c5573, package_extract_file("patch/system/priv-app/ClockworkSettings.apk.p"));
set_progress(0.903782);
apply_patch("/system/priv-app/ClockworkSetup.apk", "-",
            0f7d9063e5b3463cca5738fcf2ad892f75009098, 266782,
            b1ba61860851cf07661bb4980c240ba48e84c9be, package_extract_file("patch/system/priv-app/ClockworkSetup.apk.p"));
set_progress(0.907154);
apply_patch("/system/priv-app/ContactsProvider.apk", "-",
            5a97a8dfcf957f29da42c3a59d1967f1ac21c2ae, 111566,
            34cc46e0eda341cc7256e5768efca3d2cec3721d, package_extract_file("patch/system/priv-app/ContactsProvider.apk.p"));
set_progress(0.908565);
apply_patch("/system/priv-app/DefaultContainerService.apk", "-",
            5a04cd780d7ee7f442876e3e79bacf0c8bf53d41, 9917,
            8f49a1a10ff76170ae4f891a3f48e6d051c00c29, package_extract_file("patch/system/priv-app/DefaultContainerService.apk.p"));
set_progress(0.908690);
apply_patch("/system/priv-app/DownloadProvider.apk", "-",
            69e701b45809e4db6b067e8d93bd837956cd4ab9, 315085,
            58649b50e1cb098f8f2d7da0ea3202719fd0a596, package_extract_file("patch/system/priv-app/DownloadProvider.apk.p"));
set_progress(0.912674);
apply_patch("/system/priv-app/FusedLocation.apk", "-",
            76620b0a11a2d677d5cfeb2376cc70753933bbc2, 8703,
            0ee98fef3d704d3eea07a56f3f5bd29d527e4d07, package_extract_file("patch/system/priv-app/FusedLocation.apk.p"));
set_progress(0.912784);
apply_patch("/system/priv-app/GoogleServicesFramework.apk", "-",
            da9a2b396947550e8375767fa757445f52638eb9, 1727004,
            919d44238a1019bd99e7e93d04fba03154888ed3, package_extract_file("patch/system/priv-app/GoogleServicesFramework.apk.p"));
set_progress(0.934617);
apply_patch("/system/priv-app/InputDevices.apk", "-",
            5fcaa1eb7803fe24fc779582319d849fe65e3497, 132044,
            8984505665afac82f10443e055602e5162fa2481, package_extract_file("patch/system/priv-app/InputDevices.apk.p"));
set_progress(0.936286);
apply_patch("/system/priv-app/MediaProvider.apk", "-",
            538dde9b8967bb1b793460226f9f70781703e2bd, 60397,
            7a5b33f83f23c5a9f283f29ad62e58d2ca2093d9, package_extract_file("patch/system/priv-app/MediaProvider.apk.p"));
set_progress(0.937050);
apply_patch("/system/priv-app/MinModWatchfaces.apk", "-",
            f408fc50d86346e8abcb43bf76276cc603c8c429, 412885,
            d153aac754d85c55c00831f9cf80477b7677e9a0, package_extract_file("patch/system/priv-app/MinModWatchfaces.apk.p"));
set_progress(0.942270);
apply_patch("/system/priv-app/SettingsProvider.apk", "-",
            6fa8679854d21c81e5cfad9adab52641ac08221c, 92140,
            f558576e3b323f35110e0253d1bebb4224a4bbbc, package_extract_file("patch/system/priv-app/SettingsProvider.apk.p"));
set_progress(0.943435);
apply_patch("/system/priv-app/Shell.apk", "-",
            b4ce9737f7480ed8077deb1659f566c154ca0c5f, 40652,
            0589420448abe1a7de9384bdfdf4b049f2249cba, package_extract_file("patch/system/priv-app/Shell.apk.p"));
set_progress(0.943949);
ui_print("Patching boot image...");
apply_patch("EMMC:/dev/block/mmcblk0p9:4438016:19549de458a0d78e34dc7baf37a0155416f163e5:4438016:4a74b424059af110a155cad1a28748b95d4b2794",
            "-", 4a74b424059af110a155cad1a28748b95d4b2794, 4438016,
            19549de458a0d78e34dc7baf37a0155416f163e5, package_extract_file("patch/boot.img.p"));
set_progress(1.000055);
delete("/system/recovery-from-boot.p",
       "/system/etc/install-recovery.sh");
show_progress(0.100000, 10);
ui_print("Unpacking new recovery...");
package_extract_dir("recovery", "/system");
ui_print("Symlinks and permissions...");
set_metadata_recursive("/system", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/bin", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/bin/ClockworkProxy", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:clockwork_proxy_exec:s0");
set_metadata("/system/bin/adspd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:adspd_exec:s0");
set_metadata("/system/bin/app_process", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:zygote_exec:s0");
set_metadata("/system/bin/bootanimation", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:bootanim_exec:s0");
set_metadata("/system/bin/clatd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:clatd_exec:s0");
set_metadata("/system/bin/debuggerd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:debuggerd_exec:s0");
set_metadata("/system/bin/dhcpcd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:dhcp_exec:s0");
set_metadata("/system/bin/dnsmasq", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:dnsmasq_exec:s0");
set_metadata("/system/bin/dumpstate", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:dumpstate_exec:s0");
set_metadata("/system/bin/installd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:installd_exec:s0");
set_metadata("/system/bin/keystore", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:keystore_exec:s0");
set_metadata("/system/bin/lmkd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:lmkd_exec:s0");
set_metadata("/system/bin/logwrapper", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:logwrapper_exec:s0");
set_metadata("/system/bin/m4setup", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:m4setup_exec:s0");
set_metadata("/system/bin/mediaserver", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:mediaserver_exec:s0");
set_metadata("/system/bin/mtpd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:mtp_exec:s0");
set_metadata("/system/bin/netcfg", "uid", 0, "gid", 3003, "mode", 02750, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/bin/netd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:netd_exec:s0");
set_metadata("/system/bin/ping", "uid", 0, "gid", 0, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/bin/pppd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:ppp_exec:s0");
set_metadata("/system/bin/pvrsrvctl_SGX530_125", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:pvrsrv_exec:s0");
set_metadata("/system/bin/racoon", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:racoon_exec:s0");
set_metadata("/system/bin/run-as", "uid", 0, "gid", 2000, "mode", 0750, "capabilities", 0xc0, "selabel", "u:object_r:runas_exec:s0");
set_metadata("/system/bin/sdcard", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:sdcardd_exec:s0");
set_metadata("/system/bin/servicemanager", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:servicemanager_exec:s0");
set_metadata("/system/bin/sh", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:shell_exec:s0");
set_metadata("/system/bin/surfaceflinger", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:surfaceflinger_exec:s0");
set_metadata("/system/bin/uim-sysfs", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:uim_exec:s0");
set_metadata("/system/bin/vold", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:vold_exec:s0");
set_metadata("/system/etc/dhcpcd/dhcpcd-run-hooks", "uid", 1014, "gid", 2000, "mode", 0550, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/etc/install-recovery.sh", "uid", 0, "gid", 0, "mode", 0544, "capabilities", 0x0);
set_metadata_recursive("/system/etc/ppp", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0555, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/recovery-from-boot.p", "uid", 0, "gid", 0, "mode", 0644, "capabilities", 0x0);
set_metadata_recursive("/system/vendor", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/vendor/lib/libbt-vendor.so", "uid", 0, "gid", 0, "mode", 0644, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata_recursive("/system/xbin", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
ui_print("Writing bootloader...");
package_extract_file("bootloader-flag.txt", "/dev/block/mmcblk0p11");
package_extract_file("bootloader.mbm.img", "/dev/block/mmcblk0p2");
package_extract_file("bootloader.ebr.img", "/dev/block/mmcblk0p4");
package_extract_file("bootloader.cdt.bin.img", "/dev/block/mmcblk0p5");
package_extract_file("bootloader.logo.bin.img", "/dev/block/mmcblk0p8");
package_extract_file("bootloader-flag-clear.txt", "/dev/block/mmcblk0p11");
ui_print("Patching remaining system files...");
apply_patch("/system/build.prop", "-",
            f261f9c4ed19c4a1fcd45cc2aa2af84cedd1fa85, 1649,
            bbedbfb17f6bc25036c96f847b0be4042d886d17, package_extract_file("patch/system/build.prop.p"));
set_metadata("/system/build.prop", "uid", 0, "gid", 0, "mode", 0644, "capabilities", 0x0);
unmount("/system");
