MmM5Y2M4YjZlODEwAgAAAAAAAAABAAAAAQAAAAEAAAD/////BwAHAAcAAAAHAAAAAwAAAFCLAADyjQAACgAAAGluUG9zaXRpb24MAAAAX3VpblBvc2l0aW9uAAAAAAEAAAAAAAAAAAAAAFKLAADxjQAABwAAAGluQ29sb3IJAAAAX3VpbkNvbG9yAAAAAAEAAAAAAAAAAQAAAFKLAADxjQAACgAAAGluUXVhZEVkZ2UMAAAAX3VpblF1YWRFZGdlAAAAAAEAAAAAAAAAAgAAAAgAAABSiwAA8o0AAAsAAABza19SVEFkanVzdA0AAABfdXNrX1JUQWRqdXN0AAAAAAEAAAAAAAAA/////////////////////wAAAABbiwAA8o0AAB4AAAB1Q29vcmRUcmFuc2Zvcm1NYXRyaXhfMF9TdGFnZTAgAAAAX3V1Q29vcmRUcmFuc2Zvcm1NYXRyaXhfMF9TdGFnZTAAAAAAAQAAAAAAAAD/////////////////////AAAAAAYUAADyjQAADAAAAHVfc2tSVEhlaWdodA4AAABfdXVfc2tSVEhlaWdodAAAAAABAAAAAAAAAP////////////////////8AAAAABhQAAPGNAAAbAAAAdUdyYWRpZW50WUNvb3JkRlNfU3RhZ2UxX2MwHQAAAF91dUdyYWRpZW50WUNvb3JkRlNfU3RhZ2UxX2MwAAAAAAEAAAAAAAAA/////////////////////wAAAABSiwAA8Y0AABkAAAB1c2NhbGVBbmRUcmFuc2xhdGVfU3RhZ2UzGwAAAF91dXNjYWxlQW5kVHJhbnNsYXRlX1N0YWdlMwAAAAABAAAAAAAAAP////////////////////8AAAAAUosAAPGNAAAOAAAAdVRleERvbV9TdGFnZTMQAAAAX3V1VGV4RG9tX1N0YWdlMwAAAAABAAAAAAAAAP////////////////////8AAAAAXosAAAAAAAAYAAAAdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxGgAAAF91dVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UxAAAAAAEAAAAAAAAA/////////////////////wAAAABeiwAAAAAAABgAAAB1VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTMaAAAAX3V1VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTMAAAAAAQAAAAAAAAD/////////////////////AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAAAAAAABAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAABgAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyMAAAAAAAAAAAAAAEAAAAGFAAAAQABAAEAAAAGAAAACAAAAAIAAADhDQAAAQAAAAAAAADhDQAAAQAAAAAAAAAIAAAACAAAAAAAAAAIAAAACAAAAAMAAAAUFAAAjAAAAAAAAAAAAAAAALEAAAAAAAAAAAAAAQAAAAIAAAD/////////////////////////////////////////////////////////////////////EAAAAAEAAAAAAAAA4Q0AAAEAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AAAAAAAAAAAAA4Q0AABAAAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAOENAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAgAAAAAAAAA/////wAAAAD/////AQAAAAAAAAAAAAAA/////wEAAAD/////AwAAAAAAAAAAAAAAAAAAAP//////////AQAAAAAAAAAAAAAAAQAAAP//////////AQAAAAAAAAAAAAAAAgAAAP//////////AQAAAAAAAAAAAAAAAwAAAP//////////AQAAAAAAAAABAAAAAAAAAP//////////AQAAAAAAAAABAAAAAQAAAP//////////AQAAAAAAAAAAAAAAAAAAAGEIAABmbG9hdDMgdmVjM19jdG9yKGZsb2F0MiB4MCwgZmxvYXQgeDEpCnsKICAgIHJldHVybiBmbG9hdDMoeDAsIHgxKTsKfQpmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwLCBmbG9hdCB4MSwgZmxvYXQgeDIsIGZsb2F0IHgzKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MSwgeDIsIHgzKTsKfQovLyBVbmlmb3JtcwoKdW5pZm9ybSBmbG9hdDQgX3NrX1JUQWRqdXN0IDogcmVnaXN0ZXIoYzApOwp1bmlmb3JtIGZsb2F0M3gzIF91Q29vcmRUcmFuc2Zvcm1NYXRyaXhfMF9TdGFnZTAgOiByZWdpc3RlcihjMSk7CiNpZmRlZiBBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOCiNkZWZpbmUgTE9PUCBbbG9vcF0KI2RlZmluZSBGTEFUVEVOIFtmbGF0dGVuXQojZWxzZQojZGVmaW5lIExPT1AKI2RlZmluZSBGTEFUVEVOCiNlbmRpZgovLyBBdHRyaWJ1dGVzCnN0YXRpYyBmbG9hdDIgX2luUG9zaXRpb24gPSB7MCwgMH07CnN0YXRpYyBmbG9hdDQgX2luQ29sb3IgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyBmbG9hdDQgX2luUXVhZEVkZ2UgPSB7MCwgMCwgMCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX1Bvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDQgX3ZRdWFkRWRnZV9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyAgZmxvYXQ0IF92aW5Db2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyAgZmxvYXQyIF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSB7MCwgMH07CgpjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKQp7CiAgICBmbG9hdDQgZHhfVmlld0FkanVzdCA6IHBhY2tvZmZzZXQoYzEpOwogICAgZmxvYXQyIGR4X1ZpZXdDb29yZHMgOiBwYWNrb2Zmc2V0KGMyKTsKICAgIGZsb2F0MiBkeF9WaWV3U2NhbGUgIDogcGFja29mZnNldChjMyk7Cn07Cgp2b2lkIGdsX21haW4oKQp7CihfdlF1YWRFZGdlX1N0YWdlMCA9IF9pblF1YWRFZGdlKTsKKF92aW5Db2xvcl9TdGFnZTAgPSBfaW5Db2xvcik7CmZsb2F0MiBfcG9zMiA9IF9pblBvc2l0aW9uOwooX3ZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCA9IG11bCh0cmFuc3Bvc2UoX3VDb29yZFRyYW5zZm9ybU1hdHJpeF8wX1N0YWdlMCksIHZlYzNfY3RvcihfaW5Qb3NpdGlvbiwgMS4wKSkueHkpOwooZ2xfUG9zaXRpb24gPSB2ZWM0X2N0b3IoX3BvczIueCwgX3BvczIueSwgMC4wLCAxLjApKTsKKGdsX1Bvc2l0aW9uID0gdmVjNF9jdG9yKCgoZ2xfUG9zaXRpb24ueCAqIF9za19SVEFkanVzdC54KSArIChnbF9Qb3NpdGlvbi53ICogX3NrX1JUQWRqdXN0LnkpKSwgKChnbF9Qb3NpdGlvbi55ICogX3NrX1JUQWRqdXN0LnopICsgKGdsX1Bvc2l0aW9uLncgKiBfc2tfUlRBZGp1c3QudykpLCAwLjAsIGdsX1Bvc2l0aW9uLncpKTsKfQoKQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAKc3RydWN0IFZTX09VVFBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMzsKICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiBURVhDT09SRDQ7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDQgdjEgOiBURVhDT09SRDE7CiAgICBmbG9hdDIgdjIgOiBURVhDT09SRDI7Cn07CgpWU19PVVRQVVQgbWFpbihWU19JTlBVVCBpbnB1dCkKewogICAgaW5pdEF0dHJpYnV0ZXMoaW5wdXQpOwoKICAgIGdsX21haW4oKTsKCiAgICBWU19PVVRQVVQgb3V0cHV0OwogICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gZ2xfUG9zaXRpb247CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueCA9IGdsX1Bvc2l0aW9uLng7CiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueSA9IC0gZ2xfUG9zaXRpb24ueTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi56ID0gKGdsX1Bvc2l0aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTsKICAgIG91dHB1dC5keF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udzsKICAgIG91dHB1dC5nbF9GcmFnQ29vcmQgPSBnbF9Qb3NpdGlvbjsKICAgIG91dHB1dC52MCA9IF92UXVhZEVkZ2VfU3RhZ2UwOwogICAgb3V0cHV0LnYxID0gX3ZpbkNvbG9yX1N0YWdlMDsKICAgIG91dHB1dC52MiA9IF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTA7CgogICAgcmV0dXJuIG91dHB1dDsKfQoAAADGEQAAZmxvYXQyIHZlYzJfY3RvcihmbG9hdCB4MCwgZmxvYXQgeDEpCnsKICAgIHJldHVybiBmbG9hdDIoeDAsIHgxKTsKfQpmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MCwgeDAsIHgwKTsKfQpmbG9hdDQgdmVjNF9jdG9yKGZsb2F0IHgwLCBmbG9hdCB4MSwgZmxvYXQgeDIsIGZsb2F0IHgzKQp7CiAgICByZXR1cm4gZmxvYXQ0KHgwLCB4MSwgeDIsIHgzKTsKfQpmbG9hdDQgdmVjNF9jdG9yKGZsb2F0MyB4MCwgZmxvYXQgeDEpCnsKICAgIHJldHVybiBmbG9hdDQoeDAsIHgxKTsKfQovLyBVbmlmb3JtcwoKdW5pZm9ybSBmbG9hdCBfdV9za1JUSGVpZ2h0IDogcmVnaXN0ZXIoYzApOwp1bmlmb3JtIGZsb2F0IF91R3JhZGllbnRZQ29vcmRGU19TdGFnZTFfYzAgOiByZWdpc3RlcihjMSk7CnVuaWZvcm0gZmxvYXQ0IF91c2NhbGVBbmRUcmFuc2xhdGVfU3RhZ2UzIDogcmVnaXN0ZXIoYzIpOwp1bmlmb3JtIGZsb2F0NCBfdVRleERvbV9TdGFnZTMgOiByZWdpc3RlcihjMyk7CnN0YXRpYyBjb25zdCB1aW50IF91VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTEgPSAwOwpzdGF0aWMgY29uc3QgdWludCBfdVRleHR1cmVTYW1wbGVyXzBfU3RhZ2UzID0gMTsKdW5pZm9ybSBUZXh0dXJlMkQ8ZmxvYXQ0PiB0ZXh0dXJlczJEWzJdIDogcmVnaXN0ZXIodDApOwp1bmlmb3JtIFNhbXBsZXJTdGF0ZSBzYW1wbGVyczJEWzJdIDogcmVnaXN0ZXIoczApOwojaWZkZWYgQU5HTEVfRU5BQkxFX0xPT1BfRkxBVFRFTgojZGVmaW5lIExPT1AgW2xvb3BdCiNkZWZpbmUgRkxBVFRFTiBbZmxhdHRlbl0KI2Vsc2UKI2RlZmluZSBMT09QCiNkZWZpbmUgRkxBVFRFTgojZW5kaWYKLy8gVmFyeWluZ3MKc3RhdGljICBmbG9hdDQgX3ZRdWFkRWRnZV9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyAgZmxvYXQ0IF92aW5Db2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CnN0YXRpYyAgZmxvYXQyIF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAgPSB7MCwgMH07CgpzdGF0aWMgZmxvYXQ0IGdsX0NvbG9yWzFdID0KewogICAgZmxvYXQ0KDAsIDAsIDAsIDApCn07CnN0YXRpYyBmbG9hdDQgZ2xfRnJhZ0Nvb3JkID0gZmxvYXQ0KDAsIDAsIDAsIDApOwoKY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSkKewogICAgZmxvYXQ0IGR4X1ZpZXdDb29yZHMgOiBwYWNrb2Zmc2V0KGMxKTsKICAgIGZsb2F0MyBkeF9EZXB0aEZyb250IDogcGFja29mZnNldChjMik7CiAgICBmbG9hdDIgZHhfVmlld1NjYWxlIDogcGFja29mZnNldChjMyk7CiAgICBzdHJ1Y3QgU2FtcGxlck1ldGFkYXRhCiAgICB7CiAgICAgICAgaW50IGJhc2VMZXZlbDsKICAgICAgICBpbnQgaW50ZXJuYWxGb3JtYXRCaXRzOwogICAgICAgIGludCB3cmFwTW9kZXM7CiAgICAgICAgaW50IHBhZGRpbmc7CiAgICB9OwogICAgU2FtcGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVsyXSA6IHBhY2tvZmZzZXQoYzQpOwp9OwoKI2RlZmluZSBHTF9VU0VTX0ZSQUdfQ09MT1IKZmxvYXQ0IGdsX3RleHR1cmUyRCh1aW50IHNhbXBsZXJJbmRleCwgZmxvYXQyIHQpCnsKICAgIHJldHVybiB0ZXh0dXJlczJEW3NhbXBsZXJJbmRleF0uU2FtcGxlKHNhbXBsZXJzMkRbc2FtcGxlckluZGV4XSwgZmxvYXQyKHQueCwgdC55KSk7Cn0KCiNkZWZpbmUgR0xfVVNFU19GUkFHX0NPT1JECmZsb2F0NCBtb2RfZW11KGZsb2F0NCB4LCBmbG9hdDQgeSkKewogICAgcmV0dXJuIHggLSB5ICogZmxvb3IoeCAvIHkpOwp9CgoKdm9pZCBnbF9tYWluKCkKewpmbG9hdDIgX19za3RtcENvb3JkID0gZ2xfRnJhZ0Nvb3JkLnh5OwpmbG9hdDQgX3NrX0ZyYWdDb29yZCA9IHZlYzRfY3RvcihfX3NrdG1wQ29vcmQueCwgKF91X3NrUlRIZWlnaHQgLSBfX3NrdG1wQ29vcmQueSksIDEuMCwgMS4wKTsKZmxvYXQ0IF9vdXRwdXRDb2xvcl9TdGFnZTAgPSB7MCwgMCwgMCwgMH07CmZsb2F0NCBfb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwID0gezAsIDAsIDAsIDB9Owp7Cihfb3V0cHV0Q29sb3JfU3RhZ2UwID0gX3ZpbkNvbG9yX1N0YWdlMCk7CmZsb2F0IF9lZGdlQWxwaGEgPSB7MH07CmZsb2F0MiBfZHV2ZHggPSBkZHgoX3ZRdWFkRWRnZV9TdGFnZTAueHkpOwpmbG9hdDIgX2R1dmR5ID0gZGR5KF92UXVhZEVkZ2VfU3RhZ2UwLnh5KTsKaWYgKCgoX3ZRdWFkRWRnZV9TdGFnZTAueiA+IDAuMCkgJiYgKF92UXVhZEVkZ2VfU3RhZ2UwLncgPiAwLjApKSkKewooX2VkZ2VBbHBoYSA9IG1pbigobWluKF92UXVhZEVkZ2VfU3RhZ2UwLnosIF92UXVhZEVkZ2VfU3RhZ2UwLncpICsgMC41KSwgMS4wKSk7Cn0KZWxzZQp7CmZsb2F0MiBfZ0YgPSB2ZWMyX2N0b3IoKCgoMi4wICogX3ZRdWFkRWRnZV9TdGFnZTAueCkgKiBfZHV2ZHgueCkgLSBfZHV2ZHgueSksICgoKDIuMCAqIF92UXVhZEVkZ2VfU3RhZ2UwLngpICogX2R1dmR5LngpIC0gX2R1dmR5LnkpKTsKKF9lZGdlQWxwaGEgPSAoKF92UXVhZEVkZ2VfU3RhZ2UwLnggKiBfdlF1YWRFZGdlX1N0YWdlMC54KSAtIF92UXVhZEVkZ2VfU3RhZ2UwLnkpKTsKKF9lZGdlQWxwaGEgPSBjbGFtcCgoMC41IC0gKF9lZGdlQWxwaGEgLyBsZW5ndGgoX2dGKSkpLCAwLjAsIDEuMCkpOwp9Cihfb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwID0gdmVjNF9jdG9yKF9lZGdlQWxwaGEpKTsKfQpmbG9hdDQgX291dHB1dF9TdGFnZTEgPSB7MCwgMCwgMCwgMH07CnsKZmxvYXQ0IF9jaGlsZCA9IHswLCAwLCAwLCAwfTsKewpmbG9hdDIgX2Nvb3JkID0gdmVjMl9jdG9yKF92VHJhbnNmb3JtZWRDb29yZHNfMF9TdGFnZTAueCwgX3VHcmFkaWVudFlDb29yZEZTX1N0YWdlMV9jMCk7CihfY2hpbGQgPSBnbF90ZXh0dXJlMkQoX3VUZXh0dXJlU2FtcGxlcl8wX1N0YWdlMSwgX2Nvb3JkKSk7Cn0KKF9vdXRwdXRfU3RhZ2UxID0gKF9jaGlsZCAqIF9vdXRwdXRDb2xvcl9TdGFnZTAudykpOwp9CmZsb2F0NCBfb3V0cHV0X1N0YWdlMiA9IHswLCAwLCAwLCAwfTsKewpmbG9hdCBfdmFsdWUgPSB7MH07CnsKZmxvYXQ0IF9tb2RWYWx1ZXMgPSBtb2RfZW11KF9za19GcmFnQ29vcmQueHl4eSwgZmxvYXQ0KDIuMCwgMi4wLCA0LjAsIDQuMCkpOwpmbG9hdDQgX3N0ZXBWYWx1ZXMgPSBzdGVwKF9tb2RWYWx1ZXMsIGZsb2F0NCgxLjAsIDEuMCwgMi4wLCAyLjApKTsKKF92YWx1ZSA9IChkb3QoX3N0ZXBWYWx1ZXMsIGZsb2F0NCgwLjUsIDAuMjUsIDAuMTI1LCAwLjA2MjUpKSAtIDAuNDY4NzUpKTsKfQooX291dHB1dF9TdGFnZTIgPSB2ZWM0X2N0b3IoY2xhbXAoKF9vdXRwdXRfU3RhZ2UxLnh5eiArIChfdmFsdWUgKiAwLjAwMzkyMTU2ODkpKSwgMC4wLCBfb3V0cHV0X1N0YWdlMS53KSwgX291dHB1dF9TdGFnZTEudykpOwp9CmZsb2F0NCBfb3V0cHV0X1N0YWdlMyA9IHswLCAwLCAwLCAwfTsKewpmbG9hdDIgX2Nvb3JkcyA9ICgoX3NrX0ZyYWdDb29yZC54eSAqIF91c2NhbGVBbmRUcmFuc2xhdGVfU3RhZ2UzLnh5KSArIF91c2NhbGVBbmRUcmFuc2xhdGVfU3RhZ2UzLnp3KTsKewpib29sNCBfb3V0c2lkZSA9IHswLCAwLCAwLCAwfTsKKF9vdXRzaWRlLnh5ID0gKF9jb29yZHMgPCBfdVRleERvbV9TdGFnZTMueHkpKTsKKF9vdXRzaWRlLnp3ID0gKF9jb29yZHMgPiBfdVRleERvbV9TdGFnZTMuencpKTsKZmxvYXQ0IHM5MjggPSB7MCwgMCwgMCwgMH07CmlmIChhbnkoX291dHNpZGUpKQp7CihzOTI4ID0gZmxvYXQ0KDAuMCwgMC4wLCAwLjAsIDAuMCkpOwp9CmVsc2UKewooczkyOCA9IChfb3V0cHV0Q292ZXJhZ2VfU3RhZ2UwICogZ2xfdGV4dHVyZTJEKF91VGV4dHVyZVNhbXBsZXJfMF9TdGFnZTMsIF9jb29yZHMpLnh4eHgpKTsKfQooX291dHB1dF9TdGFnZTMgPSBzOTI4KTsKfQp9CnsKKGdsX0NvbG9yWzBdID0gKF9vdXRwdXRfU3RhZ2UyICogX291dHB1dF9TdGFnZTMpKTsKfQp9CnN0cnVjdCBQU19JTlBVVAp7CiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiBTVl9Qb3NpdGlvbjsKICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6IFRFWENPT1JEMzsKICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiBURVhDT09SRDQ7CiAgICBmbG9hdDQgdjAgOiBURVhDT09SRDA7CiAgICBmbG9hdDQgdjEgOiBURVhDT09SRDE7CiAgICBmbG9hdDIgdjIgOiBURVhDT09SRDI7Cn07CgpAQCBQSVhFTCBPVVRQVVQgQEAKUFNfT1VUUFVUIG1haW4oUFNfSU5QVVQgaW5wdXQpCnsKICAgIGZsb2F0IHJodyA9IDEuMCAvIGlucHV0LmdsX0ZyYWdDb29yZC53OwogICAgZ2xfRnJhZ0Nvb3JkLnggPSBpbnB1dC5keF9Qb3NpdGlvbi54OwogICAgZ2xfRnJhZ0Nvb3JkLnkgPSBpbnB1dC5keF9Qb3NpdGlvbi55OwogICAgZ2xfRnJhZ0Nvb3JkLnogPSAoaW5wdXQuZ2xfRnJhZ0Nvb3JkLnogKiByaHcpICogZHhfRGVwdGhGcm9udC54ICsgZHhfRGVwdGhGcm9udC55OwogICAgZ2xfRnJhZ0Nvb3JkLncgPSByaHc7CiAgICBfdlF1YWRFZGdlX1N0YWdlMCA9IGlucHV0LnYwOwogICAgX3ZpbkNvbG9yX1N0YWdlMCA9IGlucHV0LnYxOwogICAgX3ZUcmFuc2Zvcm1lZENvb3Jkc18wX1N0YWdlMCA9IGlucHV0LnYyLnh5OwoKICAgIGdsX21haW4oKTsKCiAgICByZXR1cm4gZ2VuZXJhdGVPdXRwdXQoKTsKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABSiwAACQAAAGdsX0NvbG9yMAsAAABnbF9Db2xvclswXQAAAAAbAwAAc3RydWN0IEdTX0lOUFVUCnsKICAgIGZsb2F0NCBkeF9Qb3NpdGlvbiA6IFNWX1Bvc2l0aW9uOwogICAgZmxvYXQ0IGdsX1Bvc2l0aW9uIDogVEVYQ09PUkQzOwogICAgZmxvYXQ0IGdsX0ZyYWdDb29yZCA6IFRFWENPT1JENDsKICAgIGZsb2F0NCB2MCA6IFRFWENPT1JEMDsKICAgIGZsb2F0NCB2MSA6IFRFWENPT1JEMTsKICAgIGZsb2F0MiB2MiA6IFRFWENPT1JEMjsKfTsKCnN0cnVjdCBHU19PVVRQVVQKewogICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogU1ZfUG9zaXRpb247CiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiBURVhDT09SRDM7CiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3JkIDogVEVYQ09PUkQ0OwogICAgZmxvYXQ0IHYw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