assert(getprop("ro.product.device") == "a789_ics2" ||
       getprop("ro.product.device") == "A789" ||
       getprop("ro.product.device") == "A789" ||
       getprop("ro.build.product") == "a789_ics2" ||
       getprop("ro.build.product") == "A789" ||
       getprop("ro.build.product") == "A789");
show_progress(0.500000, 0);
ui_print("Formatting system...");
unmount("/system");
format("ext4", "EMMC", "/dev/block/mmcblk0p3", "0");
ui_print("Installing system files...");
mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
package_extract_dir("system", "/system");
package_extract_dir("recovery", "/system");
ui_print("Creating system links...");
symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("aee_aed", "/system/bin/debuggerd");
symlink("mksh", "/system/bin/sh");
symlink("toolbox", "/system/bin/cat", "/system/bin/chmod",
        "/system/bin/chown", "/system/bin/cmp", "/system/bin/date",
        "/system/bin/dd", "/system/bin/df", "/system/bin/dmesg",
        "/system/bin/getevent", "/system/bin/getprop", "/system/bin/hd",
        "/system/bin/id", "/system/bin/ifconfig", "/system/bin/iftop",
        "/system/bin/insmod", "/system/bin/ioctl", "/system/bin/ionice",
        "/system/bin/kill", "/system/bin/ln", "/system/bin/log",
        "/system/bin/ls", "/system/bin/lsmod", "/system/bin/lsof",
        "/system/bin/mkdir", "/system/bin/mount", "/system/bin/mv",
        "/system/bin/nandread", "/system/bin/netstat",
        "/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv",
        "/system/bin/ps", "/system/bin/reboot", "/system/bin/renice",
        "/system/bin/rm", "/system/bin/rmdir", "/system/bin/rmmod",
        "/system/bin/route", "/system/bin/schedtop", "/system/bin/sendevent",
        "/system/bin/setconsole", "/system/bin/setprop", "/system/bin/sleep",
        "/system/bin/smd", "/system/bin/start", "/system/bin/stop",
        "/system/bin/sync", "/system/bin/top", "/system/bin/touch",
        "/system/bin/umount", "/system/bin/uptime", "/system/bin/vmstat",
        "/system/bin/watchprops",
        "/system/bin/wipe");
ui_print("Set permission...");
set_perm_recursive(0, 0, 0755, 0755, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm(0, 0, 0644, "/system/build.prop");
set_perm(0, 0, 0644, "/system/etc/.gitignore");
set_perm_recursive(0, 0, 0755, 0644, "/system/etc/.tp");
set_perm(0, 0, 0644, "/system/etc/NOTICE.html.gz");
set_perm(0, 0, 0644, "/system/etc/agps_profiles_conf.xml");
set_perm(0, 0, 0644, "/system/etc/apns-conf.xml");
set_perm(0, 0, 0644, "/system/etc/audio_effects.conf");
set_perm(0, 0, 0644, "/system/etc/black_apps.xml");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm_recursive(0, 0, 0755, 0644, "/system/etc/dhcpcd");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm(0, 0, 0644, "/system/etc/disableapplist.txt");
set_perm_recursive(0, 0, 0755, 0644, "/system/etc/dm");
set_perm(0, 0, 0644, "/system/etc/epo_conf.xml");
set_perm(0, 0, 0644, "/system/etc/event-log-tags");
set_perm(0, 0, 0644, "/system/etc/factory.ini");
set_perm(0, 0, 0644, "/system/etc/fallback_fonts.xml");
set_perm_recursive(0, 0, 0755, 0644, "/system/etc/firmware");
set_perm(0, 0, 0644, "/system/etc/hosts");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");
set_perm_recursive(0, 0, 0755, 0644, "/system/etc/iproute2");
set_perm(0, 0, 0644, "/system/etc/lenovo_profile.lbk");
set_perm(0, 0, 0644, "/system/etc/location_service_conf.xml");
set_perm(0, 0, 0644, "/system/etc/mkshrc");
set_perm(0, 0, 0644, "/system/etc/mpeg4_venc_parameter.cfg");
set_perm(0, 0, 0644, "/system/etc/mtk_omx_core.cfg");
set_perm_recursive(0, 0, 0755, 0644, "/system/etc/permissions");
set_perm(0, 0, 0755, "/system/etc/permissions/framework-yi.xml");
set_perm(0, 0, 0644, "/system/etc/player.cfg");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(0, 0, 0755, 0644, "/system/etc/security");
set_perm(0, 0, 0644, "/system/etc/spn-conf.xml");
set_perm(0, 0, 0644, "/system/etc/system_fonts.xml");
set_perm(0, 0, 0644, "/system/etc/vold.fstab");
set_perm(0, 0, 0644, "/system/etc/vold.fstab.nand");
set_perm_recursive(0, 0, 0755, 0644, "/system/etc/wifi");
set_perm(0, 0, 0644, "/system/etc/xlog-filter-default");
set_perm(0, 0, 0644, "/system/etc/xlog-filter-tags");
set_perm_recursive(0, 0, 0755, 0644, "/system/fonts");
set_perm_recursive(0, 0, 0755, 0644, "/system/lib");
set_perm(0, 0, 0755, "/system/lib/libBaiduJni.so");
set_perm(0, 0, 0755, "/system/lib/libBaiduJniAnti.so");
set_perm(0, 0, 0755, "/system/lib/libCNPackage.so");
set_perm(0, 0, 0755, "/system/lib/libENPackage.so");
set_perm(0, 0, 0755, "/system/lib/libJniWordSegService.so");
set_perm(0, 0, 0755, "/system/lib/libSMSFilter.so");
set_perm(0, 0, 0755, "/system/lib/libSpeakerRec.so");
set_perm(0, 0, 0755, "/system/lib/libWordSegService.so");
set_perm(0, 0, 0755, "/system/lib/libacs.so");
set_perm(0, 0, 0755, "/system/lib/libbdocr.so");
set_perm(0, 0, 0755, "/system/lib/libcyberplayer.so");
set_perm(0, 0, 0755, "/system/lib/libejTTS-yi.so");
set_perm(0, 0, 0755, "/system/lib/libencrypt.so");
set_perm(0, 0, 0755, "/system/lib/libffmpeg.so");
set_perm(0, 0, 0755, "/system/lib/liblocSDK3.so");
set_perm(0, 0, 0755, "/system/lib/libmtprocessor-jni.so");
set_perm(0, 0, 0755, "/system/lib/libpush-socket.so");
set_perm(0, 0, 0755, "/system/lib/librabjni-for-camera.so");
set_perm(0, 0, 0755, "/system/lib/librabjni.so");
set_perm(0, 0, 0755, "/system/lib/libregister.so");
set_perm(0, 0, 0755, "/system/lib/libsapi_V5_1.so");
set_perm(0, 0, 0755, "/system/lib/libshare.so");
set_perm(0, 0, 0755, "/system/lib/libtmfe30.so");
set_perm(0, 0, 0755, "/system/lib/libvoiceSpeechVad.so");
set_perm(0, 0, 0755, "/system/lib/libwordseg.so");
set_perm(0, 0, 0755, "/system/lib/libwormjni.so");
set_perm(0, 0, 0755, "/system/lib/libyi_backup_module.so");
set_perm(0, 0, 0755, "/system/lib/libyi_compress_module.so");
set_perm(0, 0, 0755, "/system/lib/libyi_serviceext_module.so");
set_perm_recursive(0, 0, 0755, 0644, "/system/media");
set_perm_recursive(0, 0, 0755, 0755, "/system/media/audio");
set_perm_recursive(0, 0, 0755, 0644, "/system/media/audio/alarms");
set_perm(0, 0, 0755, "/system/media/audio/alarms/alarm.mp3");
set_perm_recursive(0, 0, 0755, 0644, "/system/media/audio/ui");
set_perm(0, 0, 0644, "/system/recovery-from-boot.p");
set_perm_recursive(0, 0, 0755, 0644, "/system/res");
set_perm_recursive(0, 0, 0755, 0644, "/system/usr");
set_perm_recursive(0, 0, 0755, 0644, "/system/vendor");
set_perm(0, 2000, 0755, "/system/vendor");
set_perm_recursive(0, 2000, 0755, 0755, "/system/vendor/bin");
set_perm(0, 2000, 0755, "/system/vendor/lib");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor/lib/drm");
set_perm(0, 0, 0644, "/system/vendor/lib/drm/libdrmwvmplugin.so");
set_perm(0, 2000, 0755, "/system/vendor/lib/egl");
set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor/lib/hw");
set_perm(0, 0, 0644, "/system/vendor/lib/hw/gralloc.mt6577.so");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm(0, 0, 0755, "/system/xbin/tcpdump");
ui_print("Update recovery image...");
show_progress(0.200000, 0);
assert(package_extract_file("recovery.img", "/tmp/recovery.img"),
       write_raw_image("/tmp/recovery.img", "recovery"),
       delete("/tmp/recovery.img"));
ui_print("Update Boot image...");
show_progress(0.200000, 10);
assert(package_extract_file("boot.img", "/tmp/boot.img"),
       write_raw_image("/tmp/boot.img", "bootimg"),
       delete("/tmp/boot.img"));
assert(package_extract_file("logo.img", "/tmp/logo.img"),
       write_raw_image("/tmp/logo.img", "logo"),
       delete("/tmp/logo.img"));
show_progress(0.100000, 0);
mount("ext4", "EMMC", "/dev/block/mmcblk0p5", "/data");
package_extract_dir("data", "/data");
set_perm_recursive(1000, 1000, 0755, 0644, "/data/app");
unmount("/data");
unmount("/system");
