ZG5sIApkbmwgICRJZCQKZG5sIApkbmwgIENvcHlyaWdodCCpIDIwMDMgS2VpdGggUGFja2FyZApkbmwgCmRubCAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCmRubCAgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQKZG5sICB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQKZG5sICBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nCmRubCAgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgS2VpdGggUGFja2FyZCBub3QgYmUgdXNlZCBpbgpkbmwgIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dApkbmwgIHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBLZWl0aCBQYWNrYXJkIG1ha2VzIG5vCmRubCAgcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0CmRubCAgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KZG5sIApkbmwgIEtFSVRIIFBBQ0tBUkQgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsCmRubCAgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCBJTiBOTwpkbmwgIEVWRU5UIFNIQUxMIEtFSVRIIFBBQ0tBUkQgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IKZG5sICBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwKZG5sICBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSCmRubCAgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgpkbmwgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCmRubApkbmwgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBjcmVhdGUgY29uZmlndXJlLgoKQUNfSU5JVChmb250cy5kdGQpCgpkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZG5sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25pbmcgICAgICAgICAgICAgIApkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCmRubCBUaGlzIGlzIHRoZSBwYWNrYWdlIHZlcnNpb24gbnVtYmVyLCBub3QgdGhlIHNoYXJlZCBsaWJyYXJ5CmRubCB2ZXJzaW9uLiAgVGhpcyBzYW1lIHZlcnNpb24gbnVtYmVyIG11c3QgYXBwZWFyIGluIGZvbnRjb25maWcvZm9udGNvbmZpZy5oCmRubCBZZXMsIGl0IGlzIGEgcGFpbiB0byBzeW5jaHJvbml6ZSB2ZXJzaW9uIG51bWJlcnMuICBVbmZvcnR1bmF0ZWx5LCBpdCdzCmRubCBub3QgcG9zc2libGUgdG8gZXh0cmFjdCB0aGUgdmVyc2lvbiBudW1iZXIgaGVyZSBmcm9tIGZvbnRjb25maWcuaApBTV9JTklUX0FVVE9NQUtFKGZvbnRjb25maWcsIDIuMi4yKQoKZG5sIGxpYnRvb2wgdmVyc2lvbmluZwoKTFRfQ1VSUkVOVD0xCkxUX1JFVklTSU9OPTQKQUNfU1VCU1QoTFRfQ1VSUkVOVCkKQUNfU1VCU1QoTFRfUkVWSVNJT04pCkxUX0FHRT0wCgpMVF9WRVJTSU9OX0lORk89IiRMVF9DVVJSRU5UOiRMVF9SRVZJU0lPTjokTFRfQUdFIgpBQ19TVUJTVChMVF9WRVJTSU9OX0lORk8pCgpMVF9DVVJSRU5UX01JTlVTX0FHRT1gZXhwciAkTFRfQ1VSUkVOVCAtICRMVF9BR0VgCkFDX1NVQlNUKExUX0NVUlJFTlRfTUlOVVNfQUdFKQoKZG5sID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpBTV9DT05GSUdfSEVBREVSKGNvbmZpZy5oKQoKQUNfUFJPR19DQwpBQ19QUk9HX0lOU1RBTEwKQUNfUFJPR19MTl9TCkFDX0xJQlRPT0xfV0lOMzJfRExMCkFNX1BST0dfTElCVE9PTApBQ19QUk9HX01BS0VfU0VUCgpkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCmNhc2UgIiRob3N0IiBpbgogICotKi1taW5ndyopCiAgICBvc193aW4zMj15ZXMKICAgIDs7CiAgKikKICAgIG9zX3dpbjMyPW5vCmVzYWMKQU1fQ09ORElUSU9OQUwoT1NfV0lOMzIsIHRlc3QgIiRvc193aW4zMiIgPSAieWVzIikKCmlmIHRlc3QgIiRvc193aW4zMiIgPSAieWVzIjsgdGhlbgogIEFDX0NIRUNLX1BST0cobXNfbGlicmFyaWFuLCBsaWIuZXhlLCB5ZXMsIG5vKQpmaQpBTV9DT05ESVRJT05BTChNU19MSUJfQVZBSUxBQkxFLCB0ZXN0IHgkbXNfbGlicmFyaWFuID0geHllcykKCmRubCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKIyBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KQUNfSEVBREVSX0RJUkVOVApBQ19IRUFERVJfU1REQwpBQ19DSEVDS19IRUFERVJTKFtmY250bC5oIHN0ZGxpYi5oIHN0cmluZy5oIHVuaXN0ZC5oXSkKCiMgQ2hlY2tzIGZvciB0eXBlZGVmcywgc3RydWN0dXJlcywgYW5kIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4KQUNfQ19DT05TVApBQ19UWVBFX1BJRF9UCgojIENoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMuCkFDX0ZVTkNfVlBSSU5URgpBQ19DSEVDS19GVU5DUyhbZ2V0ZXVpZCBnZXR1aWQgbGluayBtZW1tb3ZlIG1lbXNldCBta3N0ZW1wIHN0cmNociBzdHJyY2hyIHN0cnRvbCBnZXRvcHQgZ2V0b3B0X2xvbmddKQoKIwojIENoZWNrcyBmb3IgRnJlZVR5cGUKIwoKQUNfQVJHX1dJVEgoZnJlZXR5cGUtY29uZmlnLCBbICAtLXdpdGgtZnJlZXR5cGUtY29uZmlnPVBST0cgICBVc2UgRnJlZVR5cGUgY29uZmlndXJhdGlvbiBwcm9ncmFtIFBST0ddLCBmcmVldHlwZV9jb25maWc9JHdpdGh2YWwsIGZyZWV0eXBlX2NvbmZpZz15ZXMpCgppZiB0ZXN0ICIkZnJlZXR5cGVfY29uZmlnIiA9ICJ5ZXMiOyB0aGVuIAoJQUNfUEFUSF9QUk9HKGZ0X2NvbmZpZyxmcmVldHlwZS1jb25maWcsbm8pCglpZiB0ZXN0ICIkZnRfY29uZmlnIiA9ICJubyI7IHRoZW4KCQlBQ19NU0dfRVJST1IoW1lvdSBtdXN0IGhhdmUgZnJlZXR5cGUgaW5zdGFsbGVkOyBzZWUgaHR0cDovL3d3dy5mcmVldHlwZS5vcmcvXSkKCWZpCmVsc2UKCWZ0X2NvbmZpZz0iJGZyZWV0eXBlX2NvbmZpZyIKZmkKCkZSRUVUWVBFX0NGTEFHUz0iYCRmdF9jb25maWcgLS1jZmxhZ3NgIgpGUkVFVFlQRV9MSUJTPSJgJGZ0X2NvbmZpZyAtLWxpYnNgIgoKQUNfU1VCU1QoRlJFRVRZUEVfTElCUykKQUNfU1VCU1QoRlJFRVRZUEVfQ0ZMQUdTKQoKIwojIENoZWNrIHRvIHNlZSB3aGV0aGVyIHdlIGhhdmUgRlRfR2V0X0ZpcnN0X0NoYXIoKSwgbmV3IGluIDIuMC45CiMKCmZvbnRjb25maWdfc2F2ZV9saWJzPSRMSUJTCkxJQlM9IiRMSUJTICRGUkVFVFlQRV9MSUJTIgpBQ19DSEVDS19GVU5DUyhGVF9HZXRfRmlyc3RfQ2hhcikKTElCUz0kZm9udGNvbmZpZ19zYXZlX2xpYnMKCiMKIyBDaGVjayBleHBhdCBjb25maWd1cmF0aW9uCiMKCkFDX0FSR19XSVRIKGV4cGF0LCAgICAgICAgICAgICBbICAtLXdpdGgtZXhwYXQ9RElSICAgICAgICAgICAgICBVc2UgRXhwYXQgaW4gRElSXSwgZXhwYXQ9JHdpdGh2YWwsIGV4cGF0PXllcykKQUNfQVJHX1dJVEgoZXhwYXQtaW5jbHVkZXMsICAgIFsgIC0td2l0aC1leHBhdC1pbmNsdWRlcz1ESVIgICAgIFVzZSBFeHBhdCBpbmNsdWRlcyBpbiBESVJdLCBleHBhdF9pbmNsdWRlcz0kd2l0aHZhbCwgZXhwYXRfaW5jbHVkZXM9eWVzKQpBQ19BUkdfV0lUSChleHBhdC1saWIsICAgICAgICAgWyAgLS13aXRoLWV4cGF0LWxpYj1ESVIgICAgICAgICAgVXNlIEV4cGF0IGxpYnJhcnkgaW4gRElSXSwgZXhwYXRfbGliPSR3aXRodmFsLCBleHBhdF9saWI9eWVzKQoKY2FzZSAiJGV4cGF0IiBpbgpubykKCTs7CiopCgljYXNlICIkZXhwYXRfaW5jbHVkZXMiIGluCgl5ZXN8bm8pCgkJRVhQQVRfQ0ZMQUdTPSIiCgkJOzsKCSopCgkJRVhQQVRfQ0ZMQUdTPSItSSRleHBhdF9pbmNsdWRlcyIKCQk7OwoJZXNhYwoJY2FzZSAiJGV4cGF0X2xpYiIgaW4KCXllcykKCQljYXNlICIkZXhwYXQiIGluCgkJeWVzKQoJCQlFWFBBVF9MSUJTPSItbGV4cGF0IgoJCQk7OwoJCSopCgkJCUVYUEFUX0xJQlM9Ii1MJGV4cGF0L2xpYiAtbGV4cGF0IgoJCQk7OwoJCWVzYWMKCQk7OwoJbm8pCgkJOzsKCSopCgkJRVhQQVRfTElCUz0iLUwkZXhwYXRfbGliIC1sZXhwYXQiCgkJOzsKCWVzYWMKCglleHBhdHNhdmVkX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCglDUFBGTEFHUz0iJENQUEZMQUdTICRFWFBBVF9DRkxBR1MiCglleHBhdHNhdmVkX0xJQlM9IiRMSUJTIgoJTElCUz0iJExJQlMgJEVYUEFUX0xJQlMiCgoJQUNfQ0hFQ0tfSEVBREVSKGV4cGF0LmgpCgljYXNlICIkYWNfY3ZfaGVhZGVyX2V4cGF0X2giIGluCglubykKCQlBQ19DSEVDS19IRUFERVIoeG1scGFyc2UuaCkKCQljYXNlICIkYWNfY3ZfaGVhZGVyX3htbHBhcnNlX2giIGluCgkJbm8pCgkJCWhhdmVfZXhwYXRfaGVhZGVyPW5vOwoJCQk7OwoJCXllcykKCQkJSEFWRV9YTUxQQVJTRV9IPTEKCQkJQUNfU1VCU1QoSEFWRV9YTUxQQVJTRV9IKQoJCQlBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9YTUxQQVJTRV9ILCRIQVZFX1hNTFBBUlNFX0gsCgkJCVtVc2UgeG1scGFyc2UuaCBpbnN0ZWFkIG9mIGV4cGF0LmhdKQoJCQloYXZlX2V4cGF0X2hlYWRlcj15ZXMKCQkJOzsKCQllc2FjCgkJOzsKCXllcykKCQloYXZlX2V4cGF0X2hlYWRlcj15ZXMKCQk7OwoJZXNhYwoJY2FzZSAiJGhhdmVfZXhwYXRfaGVhZGVyIiBpbgoJbm8pCgkJZXhwYXQ9bm8KCQk7OwoJeWVzKQoJCUFDX0NIRUNLX0ZVTkNTKFhNTF9QYXJzZXJDcmVhdGUpCgkJY2FzZSAiJGFjX2N2X2Z1bmNfWE1MX1BhcnNlckNyZWF0ZSIgaW4KCQlubykKCQkJZXhwYXQ9bm8KCQkJOzsKCQl5ZXMpCgkJCUhBVkVfRVhQQVQ9MQoJCQlBQ19TVUJTVChIQVZFX0VYUEFUKQoJCQlBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9FWFBBVCwkSEFWRV9FWFBBVCwKCQkJW0ZvdW5kIGEgdXNlYWJsZSBleHBhdCBsaWJyYXJ5XSkKCQkJOzsKCQllc2FjCgkJOzsKCWVzYWMKCUNQUEZMQUdTPSIkZXhwYXRzYXZlZF9DUFBGTEFHUyIKCUxJQlM9IiRleHBhdHNhdmVkX0xJQlMiCgk7Owplc2FjCkFDX1NVQlNUKEVYUEFUX0xJQlMpCkFDX1NVQlNUKEVYUEFUX0NGTEFHUykKCQpjYXNlICIkZXhwYXQiIGluCm5vKQoJQUNfTVNHX0VSUk9SKFtjYW5ub3QgZmluZCBleHBhdCBsaWJyYXJ5XSkKCTs7CmVzYWMKCiMKIyBTZXQgZGVmYXVsdCBmb250IGRpcmVjdG9yeQojCgpBQ19BUkdfV0lUSChkZWZhdWx0LWZvbnRzLCAgICAgWyAgLS13aXRoLWRlZmF1bHQtZm9udHM9RElSICAgICAgVXNlIGZvbnRzIGZyb20gRElSIHdoZW4gY29uZmlnIGlzIGJ1c3RlZF0sIGRlZmF1bHRfZm9udHM9IiR3aXRodmFsIiwgZGVmYXVsdF9mb250cz15ZXMpCgpjYXNlICIkZGVmYXVsdF9mb250cyIgaW4KeWVzKQoJRkNfREVGQVVMVF9GT05UUz0iL3Vzci9zaGFyZS9mb250cyIKCUFDX0RFRklORV9VTlFVT1RFRChGQ19ERUZBVUxUX0ZPTlRTLCAiL3Vzci9zaGFyZS9mb250cyIsIAoJCQkgICBbU3lzdGVtIGZvbnQgZGlyZWN0b3J5XSkKCTs7CiopCglGQ19ERUZBVUxUX0ZPTlRTPSIkZGVmYXVsdF9mb250cyIKCUFDX0RFRklORV9VTlFVT1RFRChGQ19ERUZBVUxUX0ZPTlRTLCAiJGRlZmF1bHRfZm9udHMiLAoJCQkgICBbU3lzdGVtIGZvbnQgZGlyZWN0b3J5XSkKCTs7CmVzYWMKCkFDX1NVQlNUKEZDX0RFRkFVTFRfRk9OVFMpCgojCiMgQWRkIG1vcmUgZm9udHMgaWYgYXZhaWxhYmxlLiAgQnkgZGVmYXVsdCwgYWRkIG9ubHkgdGhlIGRpcmVjdG9yaWVzCiMgd2l0aCBvdXRsaW5lIGZvbnRzOyB0aG9zZSB3aXRoIGJpdG1hcHMgY2FuIGJlIGFkZGVkIGFzIGRlc2lyZWQgaW4KIyBsb2NhbC5jb25mIG9yIH4vLmZvbnRzLmNvbmYKIwpBQ19BUkdfV0lUSChhZGQtZm9udHMsICAgICAgICBbICAtLXdpdGgtYWRkLWZvbnRzPURJUjEsRElSMiwuLi5GaW5kIGFkZGl0aW9uYWwgZm9udHMgaW4gRElSMSxESVIyLC4uLiBdLCBhZGRfZm9udHM9IiR3aXRodmFsIiwgYWRkX2ZvbnRzPXllcykKCmNhc2UgIiRhZGRfZm9udHMiIGluCnllcykKCUZDX0FERF9GT05UUz0iIgoJZm9yIGRpciBpbiAvdXNyL1gxMVI2L2xpYi9YMTEgL3Vzci9YMTEvbGliL1gxMSAvdXNyL2xpYi9YMTE7IGRvCgkJY2FzZSB4IiRGQ19BRERfRk9OVFMiIGluCgkJeCkKCQkJaWYgdGVzdCAtZCAiJGRpci9mb250cyI7IHRoZW4KCQkJCWZvciBzdWIgaW4gIiRkaXIiL2ZvbnRzLyo7IGRvCgkJCQkJaWYgbHMgIiRzdWIiIHwgZ3JlcCAtcSAtaSAnXC5wZlx8XC50dFx8XC5vdCc7IHRoZW4KCQkJCQkJY2FzZSB4JEZDX0FERF9GT05UUyBpbgoJCQkJCQl4KQoJCQkJCQkJRkNfQUREX0ZPTlRTPSIkc3ViIgoJCQkJCQkJOzsKCQkJCQkJKikKCQkJCQkJCUZDX0FERF9GT05UUz0iJEZDX0FERF9GT05UUywkc3ViIgoJCQkJCQkJOzsKCQkJCQkJZXNhYwoJCQkJCWZpCgkJCQlkb25lCgkJCWZpCgkJCTs7CgkJZXNhYwoJZG9uZQoJQUNfREVGSU5FX1VOUVVPVEVEKEZDX0FERF9GT05UUywiJGFkZF9mb250cyIsW0FkZGl0aW9uYWwgZm9udCBkaXJlY3Rvcmllc10pCgk7OwpubykKCUZDX0FERF9GT05UUz0iIgoJOzsKKikKCUZDX0FERF9GT05UUz0iJGFkZF9mb250cyIKCUFDX0RFRklORV9VTlFVT1RFRChGQ19BRERfRk9OVFMsIiRhZGRfZm9udHMiLFtBZGRpdGlvbmFsIGZvbnQgZGlyZWN0b3JpZXNdKQoJOzsKZXNhYwoKQUNfU1VCU1QoRkNfQUREX0ZPTlRTKQoKRkNfRk9OVFBBVEg9IiIKCmNhc2UgIiRGQ19BRERfRk9OVFMiIGluCiIiKQoJOzsKKikKCUZDX0ZPTlRQQVRIPWBlY2hvICRGQ19BRERfRk9OVFMgfCAKCQkJc2VkIC1lICdzL14vPGRpcj4vJyAtZSAncy8kLzxcL2Rpcj4vJyAtZSAncy8sLzxcL2Rpcj4gPGRpcj4vZydgCgk7Owplc2FjCgpBQ19TVUJTVChGQ19GT05UUEFUSCkKCkZDX0ZPTlREQVRFPWBkYXRlYAoKQUNfU1VCU1QoRkNfRk9OVERBVEUpCgpBQ19BUkdfV0lUSChjb25mZGlyLCAgICAgICAgICAgWyAgLS13aXRoLWNvbmZkaXI9RElSICAgICAgICAgICAgVXNlIERJUiB0byBzdG9yZSBjb25maWd1cmF0aW9uIGZpbGVzIChkZWZhdWx0IC9ldGMvZm9udHMpXSwgY29uZmRpcj0iJHdpdGh2YWwiLCBjb25mZGlyPXllcykKCiMKIyBTZXQgQ09ORkRJUiBhbmQgRk9OVENPTkZJR19QQVRICiMKCmNhc2UgIiRjb25mZGlyIiBpbgpub3x5ZXMpCgljb25mZGlyPScke3N5c2NvbmZkaXJ9Jy9mb250cwoJOzsKKikKCTs7CmVzYWMKQUNfU1VCU1QoY29uZmRpcikKQ09ORkRJUj0ke2NvbmZkaXJ9CkFDX0RFRklORV9VTlFVT1RFRChDT05GRElSLCAiJENPTkZESVIiLFtGb250IGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5XSkKQUNfU1VCU1QoQ09ORkRJUikKCiMKIyBGaW5kIG91dCB3aGF0IGxhbmd1YWdlIG9ydGhvZ3JhcGhpZXMgYXJlIGluY2x1ZGVkCiMKCk9SVEhfRklMRVM9YGNkICR7c3JjZGlyfS9mYy1sYW5nICYmIGVjaG8gKi5vcnRoYApBQ19TVUJTVChPUlRIX0ZJTEVTKQoKIwojIExldCBwZW9wbGUgbm90IGJ1aWxkL2luc3RhbGwgZG9jcyBpZiB0aGV5IGRvbid0IGhhdmUgZG9jYm9vawojCgpBQ19DSEVDS19QUk9HKEhBU0RPQ0JPT0ssIGRvY2Jvb2syaHRtbCwgeWVzLCBubykKCkFDX0FSR19FTkFCTEUoZG9jcywgICAgICAgICAgIFsgIC0tZGlzYWJsZS1kb2NzICAgICAgICAgICAgICAgIERvbid0IGJ1aWxkIGFuZCBpbnN0YWxsIGRvY3VtZW50YXRpb25dLCxlbmFibGVfZG9jcz15ZXMpCgppZiB0ZXN0ICJ4JGVuYWJsZV9kb2NzIiA9IHh5ZXM7IHRoZW4KICBpZiB0ZXN0ICJ4JEhBU0RPQ0JPT0siICE9IHh5ZXM7IHRoZW4KICAgIGVuYWJsZV9kb2NzPW5vCiAgZmkKZmkKCkFNX0NPTkRJVElPTkFMKEVOQUJMRV9ET0NTLCB0ZXN0ICJ4JGVuYWJsZV9kb2NzIiA9IHh5ZXMpCgojCiMgRmlndXJlIG91dCB3aGVyZSB0byBpbnN0YWxsIGRvY3VtZW50YXRpb24KIwoKQUNfQVJHX1dJVEgoZG9jZGlyLCAgICAgICAgICAgWyAgLS13aXRoLWRvY2Rpcj1ESVIgICAgICAgICAgICAgVXNlIERJUiB0byBzdG9yZSBkb2N1bWVudGF0aW9uIGZpbGVzIChkZWZhdWx0ICR7ZGF0YWRpcn0vZG9jL2ZvbnRjb25maWcpXSwgY29uZmRpcj0iJHdpdGh2YWwiKQoKaWYgdGVzdCAieCR3aXRoX2RvY2RpciIgPSAieCIgOyB0aGVuCiAgRE9DRElSPScke2RhdGFkaXJ9L2RvYy9mb250Y29uZmlnJwplbHNlCiAgRE9DRElSPSR3aXRoX2RvY2RpcgpmaQoKQUNfU1VCU1QoRE9DRElSKQoKQUNfT1VUUFVUKFsKTWFrZWZpbGUgCmZvbnRjb25maWcvTWFrZWZpbGUKZmMtbGFuZy9NYWtlZmlsZQpzcmMvTWFrZWZpbGUKc3JjL2ZvbnRjb25maWcuZGVmCmZjLWNhY2hlL01ha2VmaWxlCmZjLWxpc3QvTWFrZWZpbGUKZG9jL01ha2VmaWxlCmRvYy92ZXJzaW9uLnNnbWwKdGVzdC9NYWtlZmlsZQpmb250Y29uZmlnLnNwZWMKZm9udGNvbmZpZy5wYwpmb250cy5jb25mCmZvbnRjb25maWctemlwCl0pCg==