getprop("ro.product.device") == "lime" || abort("E3004: This package is for \"lime\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Source: Redmi/lime_eea/lime:10/QKQ1.200830.002/V12.0.1.0.QJQEUXM:user/release-keys");
ui_print("Target: Redmi/lime_eea/lime:10/QKQ1.200830.002/V12.0.2.0.QJQEUXM:user/release-keys");
ui_print("Verifying current system...");
getprop("ro.build.fingerprint") == "Redmi/lime_eea/lime:10/QKQ1.200830.002/V12.0.1.0.QJQEUXM:user/release-keys" ||
    getprop("ro.build.fingerprint") == "Redmi/lime_eea/lime:10/QKQ1.200830.002/V12.0.2.0.QJQEUXM:user/release-keys" ||
    abort("E3001: Package expects build fingerprint of Redmi/lime_eea/lime:10/QKQ1.200830.002/V12.0.1.0.QJQEUXM:user/release-keys or Redmi/lime_eea/lime:10/QKQ1.200830.002/V12.0.2.0.QJQEUXM:user/release-keys; this device has " + getprop("ro.build.fingerprint") + ".");
show_progress(0.100000, 10);
patch_partition_check("EMMC:/dev/block/bootdevice/by-name/boot:100663296:f8e28b609558e3f69c58821b44f0bc1eef2ae551",
                      "EMMC:/dev/block/bootdevice/by-name/boot:100663296:b6310c400f57e7c4e779b13bc8928ca31630a118") ||
    abort("E3005: \"EMMC:/dev/block/bootdevice/by-name/boot:100663296:f8e28b609558e3f69c58821b44f0bc1eef2ae551\" or \"EMMC:/dev/block/bootdevice/by-name/boot:100663296:b6310c400f57e7c4e779b13bc8928ca31630a118\" has unexpected contents.");
apply_patch_space(100663296) || abort("E3006: Not enough free space on /cache to apply patches.");
show_progress(0.100000, 70);
if (range_sha1(map_partition("system"), "1886,1,203,231,240,260,261,521,525,537,538,557,558,1875,1876,2306,2307,26213,26214,27581,27582,32768,32770,32937,32957,32998,32999,33213,33215,33378,33380,33390,33391,33399,33401,33408,33409,33436,33438,33444,33445,38322,38323,38335,38337,38342,38343,39643,39647,39681,39682,39688,39690,39695,39696,39701,39703,39708,39709,39829,39833,39841,39842,41693,41694,41780,41781,41881,41882,41949,41950,42334,42336,42377,42378,43342,43343,43993,43995,45926,45927,45936,45937,45959,45960,45964,45965,46399,46400,46431,46433,46438,46439,46538,46540,46545,46546,49652,49654,49684,49685,49699,49701,49706,49707,49709,49710,53249,53250,53923,53925,53974,53975,54345,54347,54357,54358,54445,54449,54456,54457,55104,55105,55208,55223,55228,55231,55232,55268,55554,55555,55571,55572,55703,55704,55706,55707,55709,55710,63001,63003,63031,63032,63161,63163,63171,63172,63305,63307,63316,63317,65536,65556,67977,67979,68075,68076,68081,68083,68088,68089,68127,68129,68134,68135,68383,68384,68417,68419,68424,68425,68901,68903,68921,68922,69398,69400,69405,69406,71168,71170,71215,71216,71220,71222,71227,71228,71250,71252,71278,71279,72971,72973,72999,73000,73868,73870,73895,73896,73979,73981,73988,73989,77296,77298,81084,81085,82654,82656,84820,84821,85153,85155,85156,85157,85189,85191,85215,85216,85666,85668,86073,86074,86757,86759,86777,86778,89163,89165,89213,89214,89626,89628,89643,89644,91710,91711,97246,97248,97333,97334,98304,98306,98473,98493,98944,98946,98975,98976,101001,101002,102273,102274,105944,105945,106477,106479,106603,106604,119193,119195,119220,119221,121614,121616,121668,121669,123460,123462,123502,123503,123541,123545,123551,123552,126898,126899,127444,127446,127486,127487,130140,130141,131072,131092,131365,131367,131392,131393,131804,131808,131825,131826,132006,132007,133126,133128,133156,133157,134206,134208,134231,134232,155802,155803,157416,157418,157669,157670,157680,157682,157690,157691,158371,158375,158398,158399,163179,163180,163840,163842,164009,164029,166220,166222,166307,166308,168873,168875,168917,168918,168969,168971,168977,168978,168981,168985,168991,168992,172865,172867,172936,172937,173021,173023,173030,173031,173033,173035,173040,173041,173085,173087,173092,173093,174910,174914,174958,174959,175348,175352,175364,175365,175561,175563,175569,175570,182442,182443,183727,183731,183814,183815,183858,183859,183896,183898,183903,183904,187017,187019,187059,187060,187130,187132,187138,187139,187242,187244,187251,187252,188468,188470,188497,188498,188807,188884,192884,192885,192893,192895,192900,192901,193527,193529,193546,193547,195035,195037,195054,195055,196608,196628,197402,197404,197432,197433,198323,198325,198353,198354,198358,198360,198365,198366,198388,198390,198395,198396,198400,198402,198412,198413,198428,198430,198435,198436,199419,199421,201170,201171,201195,201197,201202,201203,204269,204271,204321,204322,204625,204627,204641,204642,205091,205095,205106,205107,206591,206593,206623,206624,206633,206635,206640,206641,207618,207620,208556,208557,211168,211169,212330,212331,213532,213533,213990,213992,214045,214048,214072,214073,214075,214076,214077,214078,214079,214080,214110,214111,216591,216593,216610,216611,217133,217135,217144,217145,219039,219040,220548,220549,221140,221141,221369,221370,222652,222653,223087,223088,224870,224871,227589,227594,227595,227596,227597,227598,227599,227600,227601,227602,227603,227604,227605,227606,227607,227608,227609,227610,227611,227612,227613,227614,227615,227616,227617,227618,227619,227620,227621,227622,227623,227624,227625,227626,227627,227628,227629,227630,227631,227632,227633,227634,227635,227636,227637,227638,227639,227640,227641,227642,227643,227644,227645,227646,227647,227648,227649,227650,227651,227652,227653,227654,227655,227656,227657,227658,227659,227660,227661,227662,227663,227664,227665,227666,227667,227668,227669,227670,227671,227672,227673,227674,227675,227676,227677,227678,227679,227680,227681,227682,227683,227684,227685,227686,227687,227688,227689,227690,227691,227692,227693,227694,227695,227696,227697,227698,227699,227700,227701,227702,227703,227704,227705,227706,227707,227708,227709,227710,227711,227712,227713,227714,227715,227716,227717,227718,227719,227720,227721,227722,227723,227724,227725,227726,227727,227728,227729,227730,227731,227732,227733,227734,227735,227736,227737,227738,227739,227740,227741,227742,227743,227744,227745,227746,227747,227748,227749,227750,227751,227752,227753,227754,227755,227756,227757,227758,227759,227760,227761,227762,227763,227764,227765,227766,227767,227768,227769,227770,227771,227772,227773,227774,227775,227776,227777,227778,227779,227780,227781,227782,227783,227784,227785,227786,227787,227788,227789,227790,227791,227792,227793,227794,227795,227796,227797,227798,227799,227800,227801,227802,227803,227804,227805,227806,227807,227808,227809,227810,227811,227812,227813,227814,227815,227816,227817,227818,227819,227820,227821,227822,227823,227824,227825,227826,227827,227828,227829,227830,227831,227832,227833,227834,227835,227836,227837,227838,227839,227840,227841,227842,227843,227844,227845,227846,227847,227848,227849,227850,227851,227852,227853,227854,227855,227856,227857,227858,227859,227860,227861,227862,227863,227864,227865,227866,227867,227868,227869,227870,227871,227872,227873,227874,227875,227876,227877,227878,227879,227880,227881,227882,227883,227884,227885,227886,227887,227888,227889,227890,227891,227892,227893,227894,227895,227896,227897,227898,227899,227900,227901,227902,227903,227904,227905,227906,227907,227908,227909,227910,227911,227912,227913,227914,227915,227916,227917,227918,227919,227920,227921,227922,227923,227924,227925,227926,227927,227928,227929,227930,227931,227932,227933,227934,227935,227936,227937,227938,227939,227940,227941,227942,227943,227944,227945,227946,227947,227948,227949,227950,227951,227952,227953,227954,227955,227956,227957,227958,227959,227960,227961,227962,227963,227964,227965,227966,227967,227968,227969,227970,227971,227972,227973,227974,227975,227976,227977,227978,227979,227980,227981,227982,227983,227984,227985,227986,227987,227988,227989,227990,227991,227992,227993,227994,227995,227996,227997,227998,227999,228000,228001,228002,228003,228004,228005,228006,228007,228008,228009,228010,228011,228012,228013,228014,228015,228016,228017,228018,228019,228020,228021,228022,228023,228024,228025,228026,228027,228028,228029,228030,228031,228032,228033,228034,228035,228036,228037,228039,228045,228046,228344,228345,228357,228358,228368,228371,228372,228373,228374,228375,228377,228378,228411,228412,228417,228418,228445,228446,228525,228526,228530,228531,229376,229378,229545,229565,229827,229828,230050,230051,230074,230075,230146,230147,230150,230155,230156,230157,230158,230159,230160,230161,231091,231092,231099,231100,231653,231657,231658,231659,231660,231661,231662,231663,231664,231665,231666,231667,231668,231669,231671,231672,231673,231676,232443,232445,232446,232447,232532,232533,232538,232540,232798,232799,232806,232808,233300,233302,233407,233408,233423,233424,233435,233436,233702,233703,233815,233816,233832,233834,233836,233837,242937,242938,250860,250861,258378,258379,262144,262166,275341,275342,275498,275499,281541,281542,294912,294914,295081,295101,303154,303155,307340,307341,307381,307382,307390,307391,307392,307393,307401,307402,307403,307404,307412,307413,307423,307424,307425,307426,307434,307435,307445,307446,307478,307479,307489,307490,307522,307523,307648,307649,307724,307725,307809,307810,308315,308316,308318,308319,308320,308321,308323,308324,308325,308326,308327,308328,308329,308330,308331,308332,308333,308334,308335,308336,308341,308342,308344,308345,308346,308347,308348,308349,308350,308351,308352,308353,308356,308357,308358,308359,308360,308361,308362,308363,308725,308726,308729,308730,308731,308732,308733,308734,308735,308736,308737,308738,308739,308740,308741,308742,308743,308744,308769,308770,308771,308772,308773,308774,308775,308776,308777,308778,308779,308780,308781,308782,308783,308784,308785,308786,308789,308790,308791,308792,308793,308794,308795,308796,308797,308798,308799,308800,308801,308802,308803,308804,308805,308806,308809,308810,308811,308812,308813,308814,308815,308816,308817,308818,308819,308820,308821,308822,308823,308824,308825,308826,308829,308830,308831,308832,308833,308834,308883,308884,308885,308886,308887,308888,308889,308890,308891,308892,308894,308896,308897,308898,308899,308900,308901,308902,308903,308904,308905,308906,308907,308908,308909,308910,308911,308912,308913,308914,308915,308916,308917,308918,308919,308920,308921,308922,308923,308924,308925,308926,308927,308928,308929,308930,308931,308932,308935,308936,308937,308938,308939,308940,308941,308942,309001,309002,309144,309145,309155,309156,309157,309158,309168,309169,309180,309181,309192,309193,309204,309205,309225,309226,309289,309290,309291,309292,309293,309294,309295,309296,309297,309298,309299,309300,309301,309302,309303,309304,309305,309306,309308,309309,309440,309442,309454,309455,309465,309466,309467,309468,309480,309481,309491,309492,309493,309494,309504,309505,309528,309529,309540,309541,309547,309548,309553,309554,309565,309566,309577,309578,309579,309580,309590,309591,309592,309593,309616,309617,309618,309619,309629,309630,309641,309642,309653,309654,309665,309666,309743,309744,309820,309821,309831,309832,309844,309845,309856,309857,309868,309869,309880,309881,309939,309941,310347,310348,310349,310350,310351,310352,310353,310354,310355,310356,310357,310358,310359,310360,310361,310362,310363,310364,310367,310368,310369,310370,310371,310372,310373,310374,310375,310376,310377,310378,310379,310380,310424,310425,310592,310593,310758,310759,319884,320387,320459,320739,320768,320770,321718,321719,321748,321749,322404,322405,322557,322558,322675,322676,327680,327700,330813,330814,330849,330850,332772,332773,332777,332778,339251,339252,343410,343411,344049,344050,344098,344099,344113,344114,344142,344143,344184,344185,344423,344424,345257,345258,346478,347964,350727,350728,351469,351470,353639,353640,355486,355487,355882,355883,356034,356037,357832,357833,358131,358132,360448,360468,360999,361000,361030,361031,361060,361061,362557,362558,362563,362564,362600,362601,362605,362606,362656,362657,362660,362661,362674,362675,362688,362689,362702,362703,362712,362713,362722,362723,362874,362875,362878,362879,362883,362884,362890,362891,362915,362916,362922,362923,362990,362991,362996,362997,363003,363004,363009,363010,363015,363016,363029,363030,363039,363040,363087,363088,363093,363094,363125,363126,363131,363132,363138,363139,363145,363146,363205,363206,363213,363214,363224,363225,363228,363229,363236,363237,363242,363243,363246,363247,363256,363257,363262,363263,363269,363270,363346,363347,363353,363354,363359,363360,363364,363365,363370,363371,363406,363407,363412,363413,363421,363422,363431,363432,363437,363438,363443,363444,363449,363450,363457,363458,363462,363463,363494,363495,363498,363499,363502,363503,363508,363509,363513,363514,363585,363586,363591,363592,363606,363607,363621,363622,363637,363638,363653,363654,363669,363670,363702,363703,363708,363709,363800,363801,363835,363836,363890,363891,364029,364030,364035,364036,364041,364042,364047,364048,364052,364053,364996,364997,365006,365007,365047,365048,365076,365077,365753,365754,365774,365775,365806,365807,365977,365978,365983,365984,366054,366055,366057,366058,366062,366063,366104,366105,366109,366110,366114,366115,366123,366124,366137,366138,366634,366635,366639,366640,366656,366657,366661,366662,366668,366669,366953,366954,366990,366991,367000,367001,367006,367007,475967,475980,475985,485173,485232,485265,589825,589925,598087,598088,598800,598801,598937,598938,598939,598941,598950,598951,599222,599223,600366,600368,600503,600504,603211,603213,606542,606543,612407,612408,612754,612760,612840,612841,612867,612870,612872,612876,616635,616636,616833,616834,616838,616839,617820,617822,617986,617987,621688,621689,622485,622486,622592,622611,625012,625014,625060,625061,633425,633426,633611,633612,633793,633794,635334,635336,639218,639219,639236,639238,639243,639244,639281,639283,639288,639289,639316,639318,639323,639324,639335,639337,639341,639342,639359,639361,639366,639367,639369,639371,639374,639375,639893,639894,641592,641594,641603,641604,641608,641610,641615,641616,641677,641679,641685,641686,641690,641692,642332,655361,655380,656832,656905,656907,657006,657007,657011,657013,657018,657019,657109,657111,657117,657118,659938,659940,659989,659990,660005,660007,660012,660013,660170,660172,660181,660182,664756,664758,664769,664770,664803,664804,664908,664909,665286,665288,665332,665333,666954,666956,668139,668140,668298,668300,668306,668307,668315,668317,668322,668323,668365,668367,668372,668373,676738,676740,676806,676807,676835,676839,676845,676846,678939,678941,678980,678981,679754,679756,679783,679784,680830,680831,680918,680920,680928,680929,681238,681240,681256,681259,681343,685302,687399,698292,698439,698440") == "aec3ef95d187234ca7c3211b6e3a750819f424b4" || 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"), "1886,1,203,231,240,260,261,521,525,537,538,557,558,1875,1876,2306,2307,26213,26214,27581,27582,32768,32770,32937,32957,32998,32999,33213,33215,33378,33380,33390,33391,33399,33401,33408,33409,33436,33438,33444,33445,38322,38323,38335,38337,38342,38343,39643,39647,39681,39682,39688,39690,39695,39696,39701,39703,39708,39709,39829,39833,39841,39842,41693,41694,41780,41781,41881,41882,41949,41950,42334,42336,42377,42378,43342,43343,43993,43995,45926,45927,45936,45937,45959,45960,45964,45965,46399,46400,46431,46433,46438,46439,46538,46540,46545,46546,49652,49654,49684,49685,49699,49701,49706,49707,49709,49710,53249,53250,53923,53925,53974,53975,54345,54347,54357,54358,54445,54449,54456,54457,55104,55105,55208,55223,55228,55231,55232,55268,55554,55555,55571,55572,55703,55704,55706,55707,55709,55710,63001,63003,63031,63032,63161,63163,63171,63172,63305,63307,63316,63317,65536,65556,67977,67979,68075,68076,68081,68083,68088,68089,68127,68129,68134,68135,68383,68384,68417,68419,68424,68425,68901,68903,68921,68922,69398,69400,69405,69406,71168,71170,71215,71216,71220,71222,71227,71228,71250,71252,71278,71279,72971,72973,72999,73000,73868,73870,73895,73896,73979,73981,73988,73989,77296,77298,81084,81085,82654,82656,84820,84821,85153,85155,85156,85157,85189,85191,85215,85216,85666,85668,86073,86074,86757,86759,86777,86778,89163,89165,89213,89214,89626,89628,89643,89644,91710,91711,97246,97248,97333,97334,98304,98306,98473,98493,98944,98946,98975,98976,101001,101002,102273,102274,105944,105945,106477,106479,106603,106604,119193,119195,119220,119221,121614,121616,121668,121669,123460,123462,123502,123503,123541,123545,123551,123552,126898,126899,127444,127446,127486,127487,130140,130141,131072,131092,131365,131367,131392,131393,131804,131808,131825,131826,132006,132007,133126,133128,133156,133157,134206,134208,134231,134232,155802,155803,157416,157418,157669,157670,157680,157682,157690,157691,158371,158375,158398,158399,163179,163180,163840,163842,164009,164029,166220,166222,166307,166308,168873,168875,168917,168918,168969,168971,168977,168978,168981,168985,168991,168992,172865,172867,172936,172937,173021,173023,173030,173031,173033,173035,173040,173041,173085,173087,173092,173093,174910,174914,174958,174959,175348,175352,175364,175365,175561,175563,175569,175570,182442,182443,183727,183731,183814,183815,183858,183859,183896,183898,183903,183904,187017,187019,187059,187060,187130,187132,187138,187139,187242,187244,187251,187252,188468,188470,188497,188498,188807,188884,192884,192885,192893,192895,192900,192901,193527,193529,193546,193547,195035,195037,195054,195055,196608,196628,197402,197404,197432,197433,198323,198325,198353,198354,198358,198360,198365,198366,198388,198390,198395,198396,198400,198402,198412,198413,198428,198430,198435,198436,199419,199421,201170,201171,201195,201197,201202,201203,204269,204271,204321,204322,204625,204627,204641,204642,205091,205095,205106,205107,206591,206593,206623,206624,206633,206635,206640,206641,207618,207620,208556,208557,211168,211169,212330,212331,213532,213533,213990,213992,214045,214048,214072,214073,214075,214076,214077,214078,214079,214080,214110,214111,216591,216593,216610,216611,217133,217135,217144,217145,219039,219040,220548,220549,221140,221141,221369,221370,222652,222653,223087,223088,224870,224871,227589,227594,227595,227596,227597,227598,227599,227600,227601,227602,227603,227604,227605,227606,227607,227608,227609,227610,227611,227612,227613,227614,227615,227616,227617,227618,227619,227620,227621,227622,227623,227624,227625,227626,227627,227628,227629,227630,227631,227632,227633,227634,227635,227636,227637,227638,227639,227640,227641,227642,227643,227644,227645,227646,227647,227648,227649,227650,227651,227652,227653,227654,227655,227656,227657,227658,227659,227660,227661,227662,227663,227664,227665,227666,227667,227668,227669,227670,227671,227672,227673,227674,227675,227676,227677,227678,227679,227680,227681,227682,227683,227684,227685,227686,227687,227688,227689,227690,227691,227692,227693,227694,227695,227696,227697,227698,227699,227700,227701,227702,227703,227704,227705,227706,227707,227708,227709,227710,227711,227712,227713,227714,227715,227716,227717,227718,227719,227720,227721,227722,227723,227724,227725,227726,227727,227728,227729,227730,227731,227732,227733,227734,227735,227736,227737,227738,227739,227740,227741,227742,227743,227744,227745,227746,227747,227748,227749,227750,227751,227752,227753,227754,227755,227756,227757,227758,227759,227760,227761,227762,227763,227764,227765,227766,227767,227768,227769,227770,227771,227772,227773,227774,227775,227776,227777,227778,227779,227780,227781,227782,227783,227784,227785,227786,227787,227788,227789,227790,227791,227792,227793,227794,227795,227796,227797,227798,227799,227800,227801,227802,227803,227804,227805,227806,227807,227808,227809,227810,227811,227812,227813,227814,227815,227816,227817,227818,227819,227820,227821,227822,227823,227824,227825,227826,227827,227828,227829,227830,227831,227832,227833,227834,227835,227836,227837,227838,227839,227840,227841,227842,227843,227844,227845,227846,227847,227848,227849,227850,227851,227852,227853,227854,227855,227856,227857,227858,227859,227860,227861,227862,227863,227864,227865,227866,227867,227868,227869,227870,227871,227872,227873,227874,227875,227876,227877,227878,227879,227880,227881,227882,227883,227884,227885,227886,227887,227888,227889,227890,227891,227892,227893,227894,227895,227896,227897,227898,227899,227900,227901,227902,227903,227904,227905,227906,227907,227908,227909,227910,227911,227912,227913,227914,227915,227916,227917,227918,227919,227920,227921,227922,227923,227924,227925,227926,227927,227928,227929,227930,227931,227932,227933,227934,227935,227936,227937,227938,227939,227940,227941,227942,227943,227944,227945,227946,227947,227948,227949,227950,227951,227952,227953,227954,227955,227956,227957,227958,227959,227960,227961,227962,227963,227964,227965,227966,227967,227968,227969,227970,227971,227972,227973,227974,227975,227976,227977,227978,227979,227980,227981,227982,227983,227984,227985,227986,227987,227988,227989,227990,227991,227992,227993,227994,227995,227996,227997,227998,227999,228000,228001,228002,228003,228004,228005,228006,228007,228008,228009,228010,228011,228012,228013,228014,228015,228016,228017,228018,228019,228020,228021,228022,228023,228024,228025,228026,228027,228028,228029,228030,228031,228032,228033,228034,228035,228036,228037,228039,228045,228046,228344,228345,228357,228358,228368,228371,228372,228373,228374,228375,228377,228378,228411,228412,228417,228418,228445,228446,228525,228526,228530,228531,229376,229378,229545,229565,229827,229828,230050,230051,230074,230075,230146,230147,230150,230155,230156,230157,230158,230159,230160,230161,231091,231092,231099,231100,231653,231657,231658,231659,231660,231661,231662,231663,231664,231665,231666,231667,231668,231669,231671,231672,231673,231676,232443,232445,232446,232447,232532,232533,232538,232540,232798,232799,232806,232808,233300,233302,233407,233408,233423,233424,233435,233436,233702,233703,233815,233816,233832,233834,233836,233837,242937,242938,250860,250861,258378,258379,262144,262166,275341,275342,275498,275499,281541,281542,294912,294914,295081,295101,303154,303155,307340,307341,307381,307382,307390,307391,307392,307393,307401,307402,307403,307404,307412,307413,307423,307424,307425,307426,307434,307435,307445,307446,307478,307479,307489,307490,307522,307523,307648,307649,307724,307725,307809,307810,308315,308316,308318,308319,308320,308321,308323,308324,308325,308326,308327,308328,308329,308330,308331,308332,308333,308334,308335,308336,308341,308342,308344,308345,308346,308347,308348,308349,308350,308351,308352,308353,308356,308357,308358,308359,308360,308361,308362,308363,308725,308726,308729,308730,308731,308732,308733,308734,308735,308736,308737,308738,308739,308740,308741,308742,308743,308744,308769,308770,308771,308772,308773,308774,308775,308776,308777,308778,308779,308780,308781,308782,308783,308784,308785,308786,308789,308790,308791,308792,308793,308794,308795,308796,308797,308798,308799,308800,308801,308802,308803,308804,308805,308806,308809,308810,308811,308812,308813,308814,308815,308816,308817,308818,308819,308820,308821,308822,308823,308824,308825,308826,308829,308830,308831,308832,308833,308834,308883,308884,308885,308886,308887,308888,308889,308890,308891,308892,308894,308896,308897,308898,308899,308900,308901,308902,308903,308904,308905,308906,308907,308908,308909,308910,308911,308912,308913,308914,308915,308916,308917,308918,308919,308920,308921,308922,308923,308924,308925,308926,308927,308928,308929,308930,308931,308932,308935,308936,308937,308938,308939,308940,308941,308942,309001,309002,309144,309145,309155,309156,309157,309158,309168,309169,309180,309181,309192,309193,309204,309205,309225,309226,309289,309290,309291,309292,309293,309294,309295,309296,309297,309298,309299,309300,309301,309302,309303,309304,309305,309306,309308,309309,309440,309442,309454,309455,309465,309466,309467,309468,309480,309481,309491,309492,309493,309494,309504,309505,309528,309529,309540,309541,309547,309548,309553,309554,309565,309566,309577,309578,309579,309580,309590,309591,309592,309593,309616,309617,309618,309619,309629,309630,309641,309642,309653,309654,309665,309666,309743,309744,309820,309821,309831,309832,309844,309845,309856,309857,309868,309869,309880,309881,309939,309941,310347,310348,310349,310350,310351,310352,310353,310354,310355,310356,310357,310358,310359,310360,310361,310362,310363,310364,310367,310368,310369,310370,310371,310372,310373,310374,310375,310376,310377,310378,310379,310380,310424,310425,310592,310593,310758,310759,319884,320387,320459,320739,320768,320770,321718,321719,321748,321749,322404,322405,322557,322558,322675,322676,327680,327700,330813,330814,330849,330850,332772,332773,332777,332778,339251,339252,343410,343411,344049,344050,344098,344099,344113,344114,344142,344143,344184,344185,344423,344424,345257,345258,346478,347964,350727,350728,351469,351470,353639,353640,355486,355487,355882,355883,356034,356037,357832,357833,358131,358132,360448,360468,360999,361000,361030,361031,361060,361061,362557,362558,362563,362564,362600,362601,362605,362606,362656,362657,362660,362661,362674,362675,362688,362689,362702,362703,362712,362713,362722,362723,362874,362875,362878,362879,362883,362884,362890,362891,362915,362916,362922,362923,362990,362991,362996,362997,363003,363004,363009,363010,363015,363016,363029,363030,363039,363040,363087,363088,363093,363094,363125,363126,363131,363132,363138,363139,363145,363146,363205,363206,363213,363214,363224,363225,363228,363229,363236,363237,363242,363243,363246,363247,363256,363257,363262,363263,363269,363270,363346,363347,363353,363354,363359,363360,363364,363365,363370,363371,363406,363407,363412,363413,363421,363422,363431,363432,363437,363438,363443,363444,363449,363450,363457,363458,363462,363463,363494,363495,363498,363499,363502,363503,363508,363509,363513,363514,363585,363586,363591,363592,363606,363607,363621,363622,363637,363638,363653,363654,363669,363670,363702,363703,363708,363709,363800,363801,363835,363836,363890,363891,364029,364030,364035,364036,364041,364042,364047,364048,364052,364053,364996,364997,365006,365007,365047,365048,365076,365077,365753,365754,365774,365775,365806,365807,365977,365978,365983,365984,366054,366055,366057,366058,366062,366063,366104,366105,366109,366110,366114,366115,366123,366124,366137,366138,366634,366635,366639,366640,366656,366657,366661,366662,366668,366669,366953,366954,366990,366991,367000,367001,367006,367007,475967,475980,475985,485173,485232,485265,589825,589925,598087,598088,598800,598801,598937,598938,598939,598941,598950,598951,599222,599223,600366,600368,600503,600504,603211,603213,606542,606543,612407,612408,612754,612760,612840,612841,612867,612870,612872,612876,616635,616636,616833,616834,616838,616839,617820,617822,617986,617987,621688,621689,622485,622486,622592,622611,625012,625014,625060,625061,633425,633426,633611,633612,633793,633794,635334,635336,639218,639219,639236,639238,639243,639244,639281,639283,639288,639289,639316,639318,639323,639324,639335,639337,639341,639342,639359,639361,639366,639367,639369,639371,639374,639375,639893,639894,641592,641594,641603,641604,641608,641610,641615,641616,641677,641679,641685,641686,641690,641692,642332,655361,655380,656832,656905,656907,657006,657007,657011,657013,657018,657019,657109,657111,657117,657118,659938,659940,659989,659990,660005,660007,660012,660013,660170,660172,660181,660182,664756,664758,664769,664770,664803,664804,664908,664909,665286,665288,665332,665333,666954,666956,668139,668140,668298,668300,668306,668307,668315,668317,668322,668323,668365,668367,668372,668373,676738,676740,676806,676807,676835,676839,676845,676846,678939,678941,678980,678981,679754,679756,679783,679784,680830,680831,680918,680920,680928,680929,681238,681240,681256,681259,681343,685302,687399,698292,698439,698440") && 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"), "416,1,106,116,118,125,126,208,210,217,218,1892,1894,2373,2374,2637,2639,2645,2646,2648,2652,2654,2665,2688,2689,2725,2727,2779,2780,2941,2942,2954,2956,2962,2963,2966,2968,2973,2974,2986,2988,2994,2997,3010,3011,5368,5369,8866,8867,9637,9638,9642,9643,9647,9648,9652,9653,9658,9659,9663,9664,9665,9666,9669,9670,9671,9672,9675,9676,9677,9678,9680,9682,9683,9684,9687,9688,9689,9690,9693,9694,9695,9696,9699,9700,9706,9707,9711,9712,9715,9717,9720,9722,9726,9727,9731,9732,9733,9734,9737,9738,9739,9740,9743,9744,9745,9746,9749,9750,9751,9752,9755,9756,9757,9758,9761,9762,9767,9768,9769,9770,9774,9775,10187,10188,11277,11285,26055,26056,26157,26158,26159,26160,26658,26660,26665,26667,26673,26675,26680,26682,26741,26743,32768,32770,32845,32887,43774,43775,44065,44066,44770,44771,44773,44775,44839,44840,44910,44911,44978,44979,44981,44982,44984,44985,45044,45046,45048,45049,45113,45114,45184,45185,45252,45253,45255,45256,45258,45261,45262,45264,45266,45267,45273,45274,45276,45277,45280,45281,45291,45294,45296,45297,45299,45301,45304,45305,45314,45315,45317,45318,45321,45323,45325,45326,45332,45333,45335,45336,45339,45340,45351,45353,45355,45356,45362,45363,45365,45366,45368,45369,45371,45372,45374,45385,45445,45446,45448,45449,45459,45460,45526,45527,45604,45605,45615,45616,45682,45683,45759,45760,45839,45840,45916,45917,45993,45994,46070,46071,46081,46082,46085,46086,46149,46150,46225,46226,46236,46237,46303,46304,46380,46381,46453,46454,46456,46457,46469,46473,46475,46476,46478,46480,46483,46484,46488,46489,46491,46492,46495,46496,47823,47825,47830,47832,47920,47921,47970,47973,48153,48154,48176,48177,48192,48193,48559,48560,48566,48567,48587,48588,48782,48783,49031,49033,49256,49257,52801,52802,52902,52903,54000,54001,54009,54010,55553,55556,55666,55667,56500,56503,56585,56586,56930,56933,57734,57737,57819,57820,58163,58165,59223,59225,59239,59240,64023,64024,64628,67404,70957,70958,71552,71567,71869,71870,78458,78459,79856,79918,83694,83695,84139,84140,90883,90884,91625,91626,93595,93596,93599,93600,97753,97754,98304,98306,98381,98418,104318,104319,104325,104327,104334,104335,104415,104416,104476,104477,110757,110759,110838,110839,117364,117365,121203,121204,121296,121297,121758,121759,125805,125806,129733,129734,130121,130122,131072,131095,134116,134117,141292,141293,145736,145737,145750,163842,163917,229378,229453,294914,294989,295003,295010,307922,308904,313801,313877,313878") == "9d05b6858a3c701b4e00f5888e05176e694519c6" || 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"), "416,1,106,116,118,125,126,208,210,217,218,1892,1894,2373,2374,2637,2639,2645,2646,2648,2652,2654,2665,2688,2689,2725,2727,2779,2780,2941,2942,2954,2956,2962,2963,2966,2968,2973,2974,2986,2988,2994,2997,3010,3011,5368,5369,8866,8867,9637,9638,9642,9643,9647,9648,9652,9653,9658,9659,9663,9664,9665,9666,9669,9670,9671,9672,9675,9676,9677,9678,9680,9682,9683,9684,9687,9688,9689,9690,9693,9694,9695,9696,9699,9700,9706,9707,9711,9712,9715,9717,9720,9722,9726,9727,9731,9732,9733,9734,9737,9738,9739,9740,9743,9744,9745,9746,9749,9750,9751,9752,9755,9756,9757,9758,9761,9762,9767,9768,9769,9770,9774,9775,10187,10188,11277,11285,26055,26056,26157,26158,26159,26160,26658,26660,26665,26667,26673,26675,26680,26682,26741,26743,32768,32770,32845,32887,43774,43775,44065,44066,44770,44771,44773,44775,44839,44840,44910,44911,44978,44979,44981,44982,44984,44985,45044,45046,45048,45049,45113,45114,45184,45185,45252,45253,45255,45256,45258,45261,45262,45264,45266,45267,45273,45274,45276,45277,45280,45281,45291,45294,45296,45297,45299,45301,45304,45305,45314,45315,45317,45318,45321,45323,45325,45326,45332,45333,45335,45336,45339,45340,45351,45353,45355,45356,45362,45363,45365,45366,45368,45369,45371,45372,45374,45385,45445,45446,45448,45449,45459,45460,45526,45527,45604,45605,45615,45616,45682,45683,45759,45760,45839,45840,45916,45917,45993,45994,46070,46071,46081,46082,46085,46086,46149,46150,46225,46226,46236,46237,46303,46304,46380,46381,46453,46454,46456,46457,46469,46473,46475,46476,46478,46480,46483,46484,46488,46489,46491,46492,46495,46496,47823,47825,47830,47832,47920,47921,47970,47973,48153,48154,48176,48177,48192,48193,48559,48560,48566,48567,48587,48588,48782,48783,49031,49033,49256,49257,52801,52802,52902,52903,54000,54001,54009,54010,55553,55556,55666,55667,56500,56503,56585,56586,56930,56933,57734,57737,57819,57820,58163,58165,59223,59225,59239,59240,64023,64024,64628,67404,70957,70958,71552,71567,71869,71870,78458,78459,79856,79918,83694,83695,84139,84140,90883,90884,91625,91626,93595,93596,93599,93600,97753,97754,98304,98306,98381,98418,104318,104319,104325,104327,104334,104335,104415,104416,104476,104477,110757,110759,110838,110839,117364,117365,121203,121204,121296,121297,121758,121759,125805,125806,129733,129734,130121,130122,131072,131095,134116,134117,141292,141293,145736,145737,145750,163842,163917,229378,229453,294914,294989,295003,295010,307922,308904,313801,313877,313878") && 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"), "18,123156,123157,282939,282940,283226,283230,283241,283244,283270,283273,283287,283290,286624,286625,294025,298687,298759,298760") == "4608bb8005ee7cea6a3d2cecb1657277d7d3425e" || 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"), "18,123156,123157,282939,282940,283226,283230,283241,283244,283270,283273,283287,283290,286624,286625,294025,298687,298759,298760") && 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;

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

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

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

ui_print("Patching firmware images...");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/abl");
package_extract_file("firmware-update/abl.elf", "/dev/block/bootdevice/by-name/ablbak");
show_progress(0.600000, 600);

# --- Start patching dynamic partitions ---


# Patch partition vendor

ui_print("Patching vendor image after verification.");
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.");
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 system

ui_print("Patching system image after verification.");
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.");

# --- End patching dynamic partitions ---

show_progress(0.100000, 2);

# ---- 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");
