getprop("ro.product.device") == "umi" || abort("E3004: This package is for \"umi\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Source: Xiaomi/umi_eea/umi:11/RKQ1.200826.002/V12.5.7.0.RJBEUXM:user/release-keys");
ui_print("Target: Xiaomi/umi_eea/umi:11/RKQ1.200826.002/V12.5.8.0.RJBEUXM:user/release-keys");
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "Xiaomi/umi_eea/umi:11/RKQ1.200826.002/V12.5.7.0.RJBEUXM:user/release-keys" ||
    getprop("ro.build.fingerprint") == "Xiaomi/umi_eea/umi:11/RKQ1.200826.002/V12.5.8.0.RJBEUXM:user/release-keys" ||
    abort("E3001: Package expects build fingerprint of Xiaomi/umi_eea/umi:11/RKQ1.200826.002/V12.5.7.0.RJBEUXM:user/release-keys or Xiaomi/umi_eea/umi:11/RKQ1.200826.002/V12.5.8.0.RJBEUXM:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
patch_partition_check(concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:f367adc2a75ce38a1787047997acb0c542b9bcfd"),
                      concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:f47b7ece309da55bab08558c4aeb2a526de1fc99")) ||
    abort(concat("E3005: \"",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:f367adc2a75ce38a1787047997acb0c542b9bcfd"),"\" or \"",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:f47b7ece309da55bab08558c4aeb2a526de1fc99"),"\" has unexpected contents."));
apply_patch_space(134217728) || abort("E3006: Not enough free space on /cache to apply patches.");
if (range_sha1(map_partition("system"), "170,1,33,44,54,56,60,88,89,21342,21343,21373,21374,27538,27539,28953,56667,56674,56675,57979,57980,59101,59102,60832,60833,61668,61669,62876,62877,63028,63029,63953,63954,65536,65553,68335,68336,69321,69322,70687,70688,71137,71138,73307,73308,73569,73570,73662,73663,73913,73914,74130,74132,74295,74299,74307,74308,74337,74341,74345,74346,74358,74364,74365,74366,75801,75807,75841,75842,75848,75854,75855,75856,75861,75867,75868,75869,77967,77968,78592,78596,78618,78619,78636,78637,79069,79086,79103,79104,79118,79119,79204,79206,79211,79213,79295,79296,79339,79340,79400,79405,79482,79486,79487,79491,79546,79549,79550,79553,79579,79581,79594,79595,79601,79602,79603,79606,79737,79738,80206,80207,82135,82137,82145,82146,82168,82169,82173,82174,82607,82608,82732,82733,82764,82770,82771,82772,83081,83085,83093,83094,83214,83220,83221,84581,86124,86262,88467,88468,88542,88543,88784,88785,89445,89449,89489,89490,89504,89510,89511,89512,89518,89520,89525,753678,753681,774540,776881,789191,789355,789356") == "9efc8585b3fac972a474f119537be6a1432ecae6" || block_image_verify(map_partition("system"), package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat")) then
ui_print("Verified system image...");
else
check_first_block(map_partition("system"));
ifelse (block_image_recover(map_partition("system"), "170,1,33,44,54,56,60,88,89,21342,21343,21373,21374,27538,27539,28953,56667,56674,56675,57979,57980,59101,59102,60832,60833,61668,61669,62876,62877,63028,63029,63953,63954,65536,65553,68335,68336,69321,69322,70687,70688,71137,71138,73307,73308,73569,73570,73662,73663,73913,73914,74130,74132,74295,74299,74307,74308,74337,74341,74345,74346,74358,74364,74365,74366,75801,75807,75841,75842,75848,75854,75855,75856,75861,75867,75868,75869,77967,77968,78592,78596,78618,78619,78636,78637,79069,79086,79103,79104,79118,79119,79204,79206,79211,79213,79295,79296,79339,79340,79400,79405,79482,79486,79487,79491,79546,79549,79550,79553,79579,79581,79594,79595,79601,79602,79603,79606,79737,79738,80206,80207,82135,82137,82145,82146,82168,82169,82173,82174,82607,82608,82732,82733,82764,82770,82771,82772,83081,83085,83093,83094,83214,83220,83221,84581,86124,86262,88467,88468,88542,88543,88784,88785,89445,89449,89489,89490,89504,89510,89511,89512,89518,89520,89525,753678,753681,774540,776881,789191,789355,789356") && block_image_verify(map_partition("system"), package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat"), ui_print("system recovered successfully."), abort("E1004: system partition fails to recover"));
endif;
if (range_sha1(map_partition("vendor"), "60,1,28,38,42,47,48,126,134,140,141,1815,1819,1832,2297,2302,2306,2310,2311,2316,2322,2323,2324,2568,2572,2577,2578,2580,2584,2586,2587,2610,2611,2647,2651,2701,2702,2713,2719,2720,2721,2724,2730,2731,2732,2735,2736,2741,2742,4338,4339,4474,4480,7298,393234,393235,409032,410283,416787,416880,416881") == "0b3efa1a70e0403f9938afbce7be877081457aba" || block_image_verify(map_partition("vendor"), package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat")) then
ui_print("Verified vendor image...");
else
check_first_block(map_partition("vendor"));
ifelse (block_image_recover(map_partition("vendor"), "60,1,28,38,42,47,48,126,134,140,141,1815,1819,1832,2297,2302,2306,2310,2311,2316,2322,2323,2324,2568,2572,2577,2578,2580,2584,2586,2587,2610,2611,2647,2651,2701,2702,2713,2719,2720,2721,2724,2730,2731,2732,2735,2736,2741,2742,4338,4339,4474,4480,7298,393234,393235,409032,410283,416787,416880,416881") && block_image_verify(map_partition("vendor"), package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat"), ui_print("vendor recovered successfully."), abort("E2004: vendor partition fails to recover"));
endif;
if (range_sha1(map_partition("product"), "406,1,16,3022,3023,3369,3370,3523,3524,5972,5973,9779,9780,10097,10098,11960,11964,12062,12063,12091,14699,14707,14708,14748,14749,22661,22662,29693,29697,29714,29717,30169,30173,31515,31516,32768,32777,33104,33105,33196,33197,34445,34446,34808,34812,35331,35332,35344,35348,35352,35353,37193,37197,37239,37240,37248,38631,40316,40317,40324,40325,40370,40371,40661,40662,40668,40669,40755,40756,40757,40758,42690,42694,42765,42766,42776,46886,54648,54649,55751,55752,64655,64656,65536,65543,68843,68846,69750,69752,72625,72626,82468,82469,92012,92019,93494,93495,98304,98313,98702,98703,109873,109874,110815,110816,110821,110822,110950,110956,110957,110958,110970,110976,110977,110978,114041,114043,126856,126857,126924,126925,128990,128992,131072,131079,144487,144488,144536,144537,145076,145077,146936,146937,151757,151758,151762,151763,151766,151767,154812,154813,160209,160210,163840,163849,164123,164124,164133,164134,164143,164144,164308,164310,165001,165002,165009,165010,165016,165017,169354,169355,169580,169582,169592,169594,169640,169642,169652,169654,169663,169664,171482,171483,171490,171492,171661,171662,171663,171664,171667,171668,171683,171684,171687,171689,171690,171692,171710,171711,171723,171724,171763,171767,171771,171775,171776,171780,171781,171797,172212,172213,172584,172585,174070,174071,174160,174162,174164,174165,174167,174168,174170,174171,174173,174174,174176,174177,174179,174180,174190,174191,174195,174196,174201,174202,174207,174208,174212,174213,174218,174219,174248,174249,174269,174270,174276,174277,174297,174298,174314,174315,174319,174320,174337,174338,174343,174344,174363,174364,174378,174379,174383,174384,174403,174404,174410,174411,174431,174432,174447,174448,174452,174453,174455,174456,174458,174459,174461,174462,174464,174465,174467,174468,175042,175044,184301,184304,186252,186253,188109,188110,190190,190191,192115,192117,193834,193835,193850,193851,194908,194909,196608,196627,202750,202752,203802,203804,204302,204303,206217,206221,206269,206270,206285,206286,206526,206530,206781,206782,214916,214917,218068,218069,218075,218076,218082,218083,218298,218299,219619,219623,219688,219689,219718,219719,219855,219859,219867,219868,221256,221260,221295,221296,221436,221442,221443,221444,221448,221449,221565,221569,221570,221571,224753,224754,229376,229385,230148,230150,230162,230163,230215,230217,230377,230380,230391,230393,230405,230407,230445,230446,231279,231280,231816,231820,231841,231842,232505,232509,232525,232526,233555,233556,234046,234050,234077,234078,244904,244905,262144,262145,268948,268949,268970,268971,269484,269485,269604,269605,269896,269897,270636,270637,271181,271182,272340,272342,273488,273489,276065,276068,279402,279403,286703,291249,291319,291320") == "2264e4f8cf631815071647141ba08afc2136ccd3" || block_image_verify(map_partition("product"), package_extract_file("product.transfer.list"), "product.new.dat", "product.patch.dat")) then
ui_print("Verified product image...");
else
ifelse (block_image_recover(map_partition("product"), "406,1,16,3022,3023,3369,3370,3523,3524,5972,5973,9779,9780,10097,10098,11960,11964,12062,12063,12091,14699,14707,14708,14748,14749,22661,22662,29693,29697,29714,29717,30169,30173,31515,31516,32768,32777,33104,33105,33196,33197,34445,34446,34808,34812,35331,35332,35344,35348,35352,35353,37193,37197,37239,37240,37248,38631,40316,40317,40324,40325,40370,40371,40661,40662,40668,40669,40755,40756,40757,40758,42690,42694,42765,42766,42776,46886,54648,54649,55751,55752,64655,64656,65536,65543,68843,68846,69750,69752,72625,72626,82468,82469,92012,92019,93494,93495,98304,98313,98702,98703,109873,109874,110815,110816,110821,110822,110950,110956,110957,110958,110970,110976,110977,110978,114041,114043,126856,126857,126924,126925,128990,128992,131072,131079,144487,144488,144536,144537,145076,145077,146936,146937,151757,151758,151762,151763,151766,151767,154812,154813,160209,160210,163840,163849,164123,164124,164133,164134,164143,164144,164308,164310,165001,165002,165009,165010,165016,165017,169354,169355,169580,169582,169592,169594,169640,169642,169652,169654,169663,169664,171482,171483,171490,171492,171661,171662,171663,171664,171667,171668,171683,171684,171687,171689,171690,171692,171710,171711,171723,171724,171763,171767,171771,171775,171776,171780,171781,171797,172212,172213,172584,172585,174070,174071,174160,174162,174164,174165,174167,174168,174170,174171,174173,174174,174176,174177,174179,174180,174190,174191,174195,174196,174201,174202,174207,174208,174212,174213,174218,174219,174248,174249,174269,174270,174276,174277,174297,174298,174314,174315,174319,174320,174337,174338,174343,174344,174363,174364,174378,174379,174383,174384,174403,174404,174410,174411,174431,174432,174447,174448,174452,174453,174455,174456,174458,174459,174461,174462,174464,174465,174467,174468,175042,175044,184301,184304,186252,186253,188109,188110,190190,190191,192115,192117,193834,193835,193850,193851,194908,194909,196608,196627,202750,202752,203802,203804,204302,204303,206217,206221,206269,206270,206285,206286,206526,206530,206781,206782,214916,214917,218068,218069,218075,218076,218082,218083,218298,218299,219619,219623,219688,219689,219718,219719,219855,219859,219867,219868,221256,221260,221295,221296,221436,221442,221443,221444,221448,221449,221565,221569,221570,221571,224753,224754,229376,229385,230148,230150,230162,230163,230215,230217,230377,230380,230391,230393,230405,230407,230445,230446,231279,231280,231816,231820,231841,231842,232505,232509,232525,232526,233555,233556,234046,234050,234077,234078,244904,244905,262144,262145,268948,268949,268970,268971,269484,269485,269604,269605,269896,269897,270636,270637,271181,271182,272340,272342,273488,273489,276065,276068,279402,279403,286703,291249,291319,291320") && block_image_verify(map_partition("product"), package_extract_file("product.transfer.list"), "product.new.dat", "product.patch.dat"), ui_print("product recovered successfully."), abort("E2004: product partition fails to recover"));
endif;
if (range_sha1(map_partition("odm"), "12,1,6,2019,2025,2026,2027,2035,2036,32231,32745,32767,32768") == "b1ca4adf0534695bbc92015641a964592a9813fe" || block_image_verify(map_partition("odm"), package_extract_file("odm.transfer.list"), "odm.new.dat", "odm.patch.dat")) then
ui_print("Verified odm image...");
else
ifelse (block_image_recover(map_partition("odm"), "12,1,6,2019,2025,2026,2027,2035,2036,32231,32745,32767,32768") && block_image_verify(map_partition("odm"), package_extract_file("odm.transfer.list"), "odm.new.dat", "odm.patch.dat"), ui_print("odm recovered successfully."), abort("E2004: odm partition fails to recover"));
endif;
if (range_sha1(map_partition("system_ext"), "352,1,29,36,40,44,45,51,57,58,59,73,79,80,81,139,143,148,149,155,161,162,163,357,361,365,366,369,373,378,379,382,383,389,395,396,397,419,425,426,427,1162,1166,1184,1185,1189,1195,1196,1197,1199,1200,1211,1217,1218,1219,1229,1230,1235,1239,1243,1244,1248,1254,1258,1259,1266,1272,1273,1274,1286,1292,1293,1294,1296,1303,1309,1316,1321,1328,1358,1365,1384,1391,1409,1414,1431,1438,1454,1455,1546,1548,1558,1559,1571,1572,1573,1574,1575,1576,1583,1584,1607,1608,1654,1659,1662,1665,1668,1671,1674,1676,1680,1681,1685,1688,1693,1694,1697,1699,2174,2176,2180,2184,2189,2191,2196,2200,2201,2205,2206,2210,2211,2215,2216,2220,2221,2225,2226,2230,2231,2233,2240,2244,2245,2249,2250,2254,2255,2259,2260,2264,2265,2269,2270,2274,2275,2277,2278,2282,2283,2287,2288,2292,2293,2297,2298,2302,2303,2307,2308,2312,2313,2315,2319,2323,2324,2326,2327,2329,2330,2334,2335,2339,2340,2342,2343,2347,2348,2352,2353,2357,2358,2362,2363,2365,2366,2370,2371,2373,2377,2390,2395,2425,2428,2536,4981,4982,5116,5793,5795,5805,6040,6041,7288,7512,8100,8101,8159,8160,8700,8701,8751,8752,9061,9062,14243,14244,14316,14317,14325,14326,14461,14462,14466,14467,14520,14521,14531,14532,14565,14566,14585,14586,14638,14639,14784,14785,14860,14861,15007,15008,19758,19760,19899,19900,19925,19926,20022,20023,20074,20075,20086,20087,20137,20138,20213,20214,20277,20278,20540,20541,21045,21046,24920,24921,24977,24978,25402,25403,31376,32412,32416,32432,32768,32801,33263,33264,34850,34851,35318,35659,39933,39934,40812,40813,40864,40865,41183,41184,43244,43245,48855,48909,48910,50610,50775,50777,50825,50827,52411,52413,65536,65563,68532,68533,68785,68786,68851,68852,68853,68854,68862,68863,68892,68893,68920,68921,70604,70606,72724,72725,72840,72841,72863,72864,73791,73792,74373,74374,74518,74519,74520,74521,75875,75879,76807,76809,76833,122746,123120,125074,125114,125115") == "982329c95820de5011371cb47794a6a1c5992f0c" || block_image_verify(map_partition("system_ext"), package_extract_file("system_ext.transfer.list"), "system_ext.new.dat", "system_ext.patch.dat")) then
ui_print("Verified system_ext image...");
else
check_first_block(map_partition("system_ext"));
ifelse (block_image_recover(map_partition("system_ext"), "352,1,29,36,40,44,45,51,57,58,59,73,79,80,81,139,143,148,149,155,161,162,163,357,361,365,366,369,373,378,379,382,383,389,395,396,397,419,425,426,427,1162,1166,1184,1185,1189,1195,1196,1197,1199,1200,1211,1217,1218,1219,1229,1230,1235,1239,1243,1244,1248,1254,1258,1259,1266,1272,1273,1274,1286,1292,1293,1294,1296,1303,1309,1316,1321,1328,1358,1365,1384,1391,1409,1414,1431,1438,1454,1455,1546,1548,1558,1559,1571,1572,1573,1574,1575,1576,1583,1584,1607,1608,1654,1659,1662,1665,1668,1671,1674,1676,1680,1681,1685,1688,1693,1694,1697,1699,2174,2176,2180,2184,2189,2191,2196,2200,2201,2205,2206,2210,2211,2215,2216,2220,2221,2225,2226,2230,2231,2233,2240,2244,2245,2249,2250,2254,2255,2259,2260,2264,2265,2269,2270,2274,2275,2277,2278,2282,2283,2287,2288,2292,2293,2297,2298,2302,2303,2307,2308,2312,2313,2315,2319,2323,2324,2326,2327,2329,2330,2334,2335,2339,2340,2342,2343,2347,2348,2352,2353,2357,2358,2362,2363,2365,2366,2370,2371,2373,2377,2390,2395,2425,2428,2536,4981,4982,5116,5793,5795,5805,6040,6041,7288,7512,8100,8101,8159,8160,8700,8701,8751,8752,9061,9062,14243,14244,14316,14317,14325,14326,14461,14462,14466,14467,14520,14521,14531,14532,14565,14566,14585,14586,14638,14639,14784,14785,14860,14861,15007,15008,19758,19760,19899,19900,19925,19926,20022,20023,20074,20075,20086,20087,20137,20138,20213,20214,20277,20278,20540,20541,21045,21046,24920,24921,24977,24978,25402,25403,31376,32412,32416,32432,32768,32801,33263,33264,34850,34851,35318,35659,39933,39934,40812,40813,40864,40865,41183,41184,43244,43245,48855,48909,48910,50610,50775,50777,50825,50827,52411,52413,65536,65563,68532,68533,68785,68786,68851,68852,68853,68854,68862,68863,68892,68893,68920,68921,70604,70606,72724,72725,72840,72841,72863,72864,73791,73792,74373,74374,74518,74519,74520,74521,75875,75879,76807,76809,76833,122746,123120,125074,125114,125115") && block_image_verify(map_partition("system_ext"), package_extract_file("system_ext.transfer.list"), "system_ext.new.dat", "system_ext.patch.dat"), ui_print("system_ext recovered successfully."), abort("E2004: system_ext partition fails to recover"));
endif;

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


# ---- radio update tasks ----

ui_print("Patching firmware images...");
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64");
package_extract_file("firmware-update/xbl_config_5.elf", "/dev/block/bootdevice/by-name/xbl_config_5");
package_extract_file("firmware-update/NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlib");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hyp");
package_extract_file("firmware-update/km4.mbn", "/dev/block/bootdevice/by-name/keymaster");
package_extract_file("firmware-update/xbl_5.elf", "/dev/block/bootdevice/by-name/xbl_5");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tz");
package_extract_file("firmware-update/aop.mbn", "/dev/block/bootdevice/by-name/aop");
package_extract_file("firmware-update/featenabler.mbn", "/dev/block/bootdevice/by-name/featenabler");
package_extract_file("firmware-update/xbl_config_4.elf", "/dev/block/bootdevice/by-name/xbl_config_4");
package_extract_file("firmware-update/BTFM.bin", "/dev/block/bootdevice/by-name/bluetooth");
package_extract_file("firmware-update/uefi_sec.mbn", "/dev/block/bootdevice/by-name/uefisecapp");
package_extract_file("firmware-update/qupv3fw.elf", "/dev/block/bootdevice/by-name/qupfw");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/abl");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfg");
package_extract_file("firmware-update/storsec.mbn", "/dev/block/bootdevice/by-name/storsec");
package_extract_file("firmware-update/xbl_4.elf", "/dev/block/bootdevice/by-name/xbl_4");
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64bak");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlibbak");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hypbak");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tzbak");
package_extract_file("firmware-update/aop.mbn", "/dev/block/bootdevice/by-name/aopbak");
package_extract_file("firmware-update/qupv3fw.elf", "/dev/block/bootdevice/by-name/qupfwbak");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/ablbak");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfgbak");
package_extract_file("firmware-update/storsec.mbn", "/dev/block/bootdevice/by-name/storsecbak");

# --- Start patching dynamic partitions ---


# Patch partition system

ui_print("Patching system image after verification.");
show_progress(0.500000, 0);
block_image_update(map_partition("system"), package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat") ||
  abort("E1001: Failed to update system image.");

# Patch partition vendor

ui_print("Patching vendor image after verification.");
show_progress(0.100000, 0);
block_image_update(map_partition("vendor"), package_extract_file("vendor.transfer.list"), "vendor.new.dat", "vendor.patch.dat") ||
  abort("E2001: Failed to update vendor image.");

# Update dynamic partition metadata

assert(update_dynamic_partitions(package_extract_file("dynamic_partitions_op_list")));

# Patch partition product

ui_print("Patching product image after verification.");
show_progress(0.100000, 0);
block_image_update(map_partition("product"), package_extract_file("product.transfer.list"), "product.new.dat", "product.patch.dat") ||
  abort("E2001: Failed to update product image.");

# Patch partition odm

ui_print("Patching odm image after verification.");
show_progress(0.100000, 0);
block_image_update(map_partition("odm"), package_extract_file("odm.transfer.list"), "odm.new.dat", "odm.patch.dat") ||
  abort("E2001: Failed to update odm image.");

# Patch partition system_ext

ui_print("Patching system_ext image after verification.");
show_progress(0.100000, 0);
block_image_update(map_partition("system_ext"), package_extract_file("system_ext.transfer.list"), "system_ext.new.dat", "system_ext.patch.dat") ||
  abort("E2001: Failed to update system_ext image.");

# --- End patching dynamic partitions ---

ui_print("Patching boot image...");
show_progress(0.100000, 10);
patch_partition(concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:f367adc2a75ce38a1787047997acb0c542b9bcfd"),
                concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:f47b7ece309da55bab08558c4aeb2a526de1fc99"),
                package_extract_file("boot.img.p")) ||
    abort(concat(        "E3008: Failed to apply patch to ",concat("EMMC:","/dev/block/bootdevice/by-name/boot",":134217728:f47b7ece309da55bab08558c4aeb2a526de1fc99")));

# ---- radio update tasks 2 ----

ui_print("Patching vbmeta dtbo logo binimages...");
package_extract_file("firmware-update/dtbo.img", "/dev/block/bootdevice/by-name/dtbo");
package_extract_file("firmware-update/vbmeta.img", "/dev/block/bootdevice/by-name/vbmeta");
package_extract_file("firmware-update/vbmeta_system.img", "/dev/block/bootdevice/by-name/vbmeta_system");
set_progress(1.000000);
