(!less_than_int(1658845724, getprop("ro.build.date.utc"))) || abort("E3003: Can't install this package (Tue Jul 26 22:28:44 CST 2022) over newer build (" + getprop("ro.build.date") + ").");
getprop("ro.product.device") == "DX160" || abort("E3004: This package is for \"DX160\" devices; this is a \"" + getprop("ro.product.device") + "\".");
ui_print("Target: iBasso/DX160/DX160:8.1.0/OPM6.171019.030.K1/222844:userdebug/test-keys");
show_progress(0.550000, 0);
ui_print("Patching system image unconditionally...");
block_image_update("/dev/block/platform/ff0f0000.dwmmc/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat.br", "system.patch.dat") ||
  abort("E1001: Failed to update system image.");
show_progress(0.100000, 0);
ui_print("Patching vendor image unconditionally...");
block_image_update("/dev/block/platform/ff0f0000.dwmmc/by-name/vendor", package_extract_file("vendor.transfer.list"), "vendor.new.dat.br", "vendor.patch.dat") ||
  abort("E2001: Failed to update vendor image.");
show_progress(0.100000, 0);
ui_print("Patching oem image unconditionally...");
block_image_update("/dev/block/platform/ff0f0000.dwmmc/by-name/oem", package_extract_file("oem.transfer.list"), "oem.new.dat.br", "oem.patch.dat") ||
  abort("E2001: Failed to update oem image.");
show_progress(0.050000, 5);
package_extract_file("boot.img", "/dev/block/platform/ff0f0000.dwmmc/by-name/boot");
show_progress(0.200000, 10);
ui_print("Writing trust img...");
package_extract_file("trust.img", "/dev/block/platform/ff0f0000.dwmmc/by-name/trust");
ui_print("Writing uboot loader img...");
package_extract_file("uboot.img", "/dev/block/platform/ff0f0000.dwmmc/by-name/uboot");
set_progress(1.000000);
