assert(getprop("ro.product.device") == "SM-A300F" || getprop("ro.build.product") == "SM-A300F" || 
       getprop("ro.product.device") == "SM-A300H" || getprop("ro.build.product") == "SM-A300H" || 
       getprop("ro.product.device") == "SM-A300FU" || getprop("ro.build.product") == "SM-A300FU" || 
       getprop("ro.product.device") == "a3lte" || getprop("ro.build.product") == "a3lte" || 
       getprop("ro.product.device") == "a3ltexx" || getprop("ro.build.product") == "a3ltexx" || 
       getprop("ro.product.device") == "a33g" || getprop("ro.build.product") == "a33g" || 
       getprop("ro.product.device") == "a33gxx" || getprop("ro.build.product") == "a33gxx" || 
       getprop("ro.product.device") == "a3ulte" || getprop("ro.build.product") == "a3ulte" || 
       getprop("ro.product.device") == "a3ultexx" || getprop("ro.build.product") == "a3ultexx" || abort("E3004: This package is for device: SM-A300F,SM-A300H,SM-A300FU,a3lte,a3ltexx,a33g,a33gxx,a3ulte,a3ultexx; this device is " + getprop("ro.product.device") + "."););
ui_print("Target: Samsung/a3ltexx/a3lte:10/QQ3A.200805.001/eng.vlw.20210407.040406:userdebug/test-keys");
package_extract_dir("install", "/tmp/install");
set_metadata_recursive("/tmp/install", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644);
set_metadata_recursive("/tmp/install/bin", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755);
run_program("/tmp/install/bin/backuptool.sh", "backup", "/dev/block/bootdevice/by-name/system", "ext4");
ui_print("Patching system image unconditionally...");
show_progress(0.900000, 0);
block_image_update("/dev/block/bootdevice/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.020000, 10);
run_program("/tmp/install/bin/backuptool.sh", "restore", "/dev/block/bootdevice/by-name/system", "ext4");
package_extract_file("boot.img", "/dev/block/bootdevice/by-name/boot");
show_progress(0.100000, 10);
if is_substring("A300FUXX", getprop("ro.bootloader")) || is_substring("A300HXX", getprop("ro.bootloader")) then
ui_print("Hardware is not default, tuning system...");
package_extract_dir("install/dtimage", "/tmp/dtimage");
set_metadata_recursive("/tmp/dtimage/", "uid", 0, "gid", 0, "fmode", 0777);
run_program("/tmp/dtimage/kernel_unpack.sh");
ifelse(is_substring("A300FUXX", getprop("ro.bootloader")), ui_print("Hardware detected: A300FU"));
ifelse(is_substring("A300FUXX", getprop("ro.bootloader")), run_program("/sbin/sh", "-c", "busybox cp -f /tmp/dtimage/dtFU.img /tmp/dtimage/out/boot.img-dt"));
if is_substring("A300HXX", getprop("ro.bootloader")) then
ui_print("Hardware detected: A300H");
run_program("/sbin/sh", "-c", "busybox cp -f /tmp/dtimage/dtH.img /tmp/dtimage/out/boot.img-dt");
mount("ext4", "EMMC", "/dev/block/bootdevice/by-name/system", "/system", "");
run_program("/sbin/sh", "-c", "busybox rm -f /system/system/vendor/etc/permissions/*nfc*");
unmount("/system");
endif;
run_program("/tmp/dtimage/kernel_make.sh");
ui_print("Kernel successfully adapted to the new hardware");
endif;
set_progress(1.000000);
